zwtsc - cliente gráfico para Terminal Service
Publicado por Davidson Rodrigues Paulo 16/04/2009
[ Hits: 6.996 ]
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
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Aplicativo simples para gravar tela
Quebra de linha na data e hora no Linux Mint
Firefox não abre em usuário não administradores (0)
Sempre que vou baixar algum pacote acontece o erro dpkg (8)
tentando instalar em um notebook antigo o Linux LegacyOS_2023... [RESO... (8)
Problema com Conexão Outlook via Firewall (OpenSUSE) com Internet Fibr... (5)