zwtsc - cliente gráfico para Terminal Service
Publicado por Davidson Rodrigues Paulo 16/04/2009
[ Hits: 6.865 ]
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
Calcula período entre data inicial e data final
Myhard - Informações sobre seu hardware
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
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Não to conseguindo resolver este problemas ao instalar o playonelinux (1)
Excluir banco de dados no xampp (1)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta