zwtsc - cliente gráfico para Terminal Service
Publicado por Davidson Rodrigues Paulo 16/04/2009
[ Hits: 6.885 ]
Homepage: http://davidsonpaulo.com/
Utilitário gráfico escrito em Shell Script utilizando o Zenity para gerar a interface gráfica.
Cria, salva e carrega sessões de Terminal Service configuradas no arquivo ~/.zwtsc.
#!/bin/bash # # zwtsc # Zenwalk Terminal Service Client # # Author: Davidson Paulo <davidsonpaulo@gmail.com> # Date: April 15, 2009 # # License: GNU General Public License v3+ ## Variables Cons="${HOME}/.zwtsc" Options="" #Keymap="en-us" # USA International keyboard Keymap="pt-br" # Brazilian keyboard, with Ç key # Display connections displayCons() { Pattern="[[:space:]]*conn[[:space:]]*" fgrep conn $Cons | sed 's/^'"$Pattern"'//' | sort | while read Conn ; do Start="${Pattern}${Conn}" echo "$Conn" sed -n '/^'"$Start"'/,/^[[:space:]]*commit/p' $Cons | egrep '[[:space:]]*IP=' | cut -d= -f2- done | sed '1i'"(Nova conexão)\n" | zenity --width=400 --height=300 --list --title="Conexões" \ --column="Conexão" --column="IP" } # Run a Terminal Service session runSession() { Pattern="[[:space:]]*conn[[:space:]]*${1}[[:space:]]*$" Block=`sed -rn '/'"$Pattern"'/,/^[[:space:]]*commit/p' $Cons` echo "$Block" | sed -r -e '1d' -e 's/[[:space:]]//' | while read Opt ; do Value="$(echo $Opt | cut -d= -f2-)" case "$Opt" in "IP="*) Options+=" $Value" ;; "USER="*) Options+=" -u $Value" ;; "PASSWORD="*) Options+=" -p '${Value}'" ;; "DOMAIN="*) Options+=" -d $Value" ;; "SIZE="*) Options+=" -g $Value" ;; "COLORS="*) Options+=" -a $Value" ;; "CLIPBOARD=1") Options+=" -r clipboard:CLIPBOARD" ;; "SHARE="*) Options+=" -r disk:Share=${Value}" ;; "CONSOLE=1") Options+=" -0" ;; "LAYOUT="*) Options+=" -k $Value" ;; "FULLSCREEN="*) Options+=" -f" ;; "commit"*) eval rdesktop "$Options" ;; esac done } # Asks for the session name getSessionName() { zenity --title="$1" --entry --text="Nome da conexão" || echo "ABORT" } # Asks for the session IP getSessionIP() { zenity title="$1" --entry --text="IP/nome de máquina" || echo "ABORT" } # Asks for the color depth getSessionColor() { for i in 8 15 16 24 ; do echo -e "\n${i} bits\n${i}" ; done | zenity --list --title="Profundidade de cores" --radiolist \ --column="" --column="Profundidade" --column="" \ --hide-column=3 --print-column=3 || echo "ABORT" } # Asks for the resolution getSessionResolution() { for i in "800x600" "1024x768" "1272x970" "Tela cheia" ; do if [ "$i" == "Tela cheia" ] ; then echo -e "\n${i}\n0" else echo -e "\n${i}\n${i}" fi done | zenity --list --title="Resolução" --radiolist \ --column="" --column="Resolução" --column="" \ --hide-column=3 --print-column=3 || echo "ABORT" } # Asks for other options getSessionOptions() { j=0 for i in "Salvar usuário" "Salvar senha" "Salvar domínio" \ "Copiar/colar" "Anexar ao console" \ "Compartilhar diretório" ; do echo -e "\n${i}\n${j}" (( j++ )) done | zenity --list --title="Opções adicionais" --checklist \ --multiple --print-column=ALL --separator=" " \ --column="" --column="Opção" --column="" \ --hide-column=3 --print-column=3 || echo "ABORT" } # Saves the session in file saveSession() { ( Conn="$1" ; shift echo "conn $Conn" echo " IP=${1}" ; shift echo " COLORS=${1}" ; shift if [ "$1" == "0" ] ; then echo " FULLSCREEN=1" else echo " SIZE=${1}" fi shift Opts="$1" shift for i in $Opts ; do case $i in 0) echo " USER=${1}" ; shift ;; 1) echo " PASSWORD=${1}" ; shift ;; 2) echo " DOMAIN=${1}" ; shift ;; 3) echo " CLIPBOARD=1" ;; 4) echo " CONSOLE=1" ;; 5) echo " SHARE='${1}'" ;; esac done echo " LAYOUT=${Keymap}" echo " commit" ) >> $Cons zenity --title="Concluído" --info \ --text="Sessão ter Terminal Service configurada." } # Configure a new Terminal Service session newSession() { title="Nova sessão" zenity="zenity --title='${title}'" SessionName=$(getSessionName "$title") [ "$SessionName" == "ABORT" ] && return 1 SessionIP=$(getSessionIP "$title") [ "$SessionIP" == "ABORT" ] && return 1 SessionColor=$(getSessionColor "$title") [ "$SessionColor" == "ABORT" ] && return 1 SessionResolution=$(getSessionResolution "$title") [ "$SessionResolution" == "ABORT" ] && return 1 SessionOptions=$(getSessionOptions "$title") [ "$SessionOptions" == "ABORT" ] && return 1 for i in $SessionOptions ; do case $i in 0) SessionUser=$(eval $zenity --entry --text="Usuário" || echo "ABORT") [ "$SessionUser" == "ABORT" ] && return 1 ;; 1) SessionPassword=$(eval $zenity --entry --text="Senha" \ --hide-text || echo "ABORT") [ "$SessionPassword" == "ABORT" ] && return 1 ;; 2) SessionDomain=$(eval $zenity --entry --text="Domínio" || echo "ABORT") [ "$SessionDomain" == "ABORT" ] && return 1 ;; 5) SessionShare=$(eval $zenity \ --title="Compartilhar diretório" \ --file-selection --directory || echo "ABORT") [ "$SessionShare" == "ABORT" ] && return 1 ;; esac done saveSession "$SessionName" "$SessionIP" "$SessionColor" \ "$SessionResolution" "$SessionOptions" \ "$SessionUser" "$SessionPassword" "$SessionDomain" \ "$SessionShare" } if [ -f $Cons ] ; then Option="$(displayCons)" if [ -n "$Option" ] ; then if [ "$Option" == "(Nova conexão)" ] ; then newSession $0 else runSession "$Option" fi fi else touch $Cons newSession $0 fi exit 0
Download automatizado do instalador do AVG Free
Remover arquivos com mais de "N" dias da Lixeira do Samba
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (16)
Arch Linux - Guia para Iniciantes (2)
Problemas ao instalar o PHP (11)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)