zwtsc - cliente gráfico para Terminal Service
Publicado por Davidson Rodrigues Paulo 16/04/2009
[ Hits: 7.055 ]
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
Sincronizando seu hosts.deny com blacklist online
PkgBuild - um gerenciador de construção de pacotes
InstallDPKG - Instalando pacotes DEB no Slackware
Comparação entre os escalonadores BFQ e MQ-Deadline (acesso a disco) no Arch e Debian
Conciliando o uso da ZRAM e SWAP em disco na sua máquina
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Converter os repositórios Debian para o novo formato com as chaves
Instalando Spotify no Debian 13
Realizar overclock no Miyoo Mini (plus ou normal)
linux mint reconhece microfone de lapela como fone de ouvido sem micro... (5)
E aí? O Warsaw já está funcionando no Debian 13? (2)
Dúvidas sobre a originalidade de conteúdos online (12)