Hamachi - Controle Gráfico
Publicado por Perfil removido 31/08/2007
[ Hits: 6.434 ]
Este script em bash cria uma interface gráfica para o Hamachi, um programa que cria redes virtuais.
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=5848
Sei que existe o gHamachi, mas criei este só para testar minhas habilidades em shell-script.
É preciso ter o zenity para criar os diálogos e ter a configuração do gksudo para executar comandos como o root (pelo menos o /sbin/tuncfg).
#!/bin/bash
#Script para controle gráfico do Hamachi
#Você precisa ter o zenity instalado,
#além do hamachi, é claro.
#Também é necessário que o seu usuário possa usar
#o gksudo para executar programas como o root
#
#Hamachi é propriedade de Applied Networking Inc.
#
#Script original feito por Xisberto [xisberto (at) gmail (dot) com]
#e licenciado sob a GNU GPLv3. Detalhes em http://www.gnu.org/licenses/gpl-3.0.txt
#Mensagem de boas vindas mostrando o status atual
zenity --info --text="Iniciando a interface de configuração do Hamachi. Status atual do Hamachi:\n\n `hamachi`"
#Função para selecionar uma rede
#Chama o zenity para listar as redes
#Passa o resultado do zenity por 2 cut,
#para eliminar os colchetes inicial e final
#mas sempre haverão problemas com redes com [ ou ] no nome
select_net()
{
#Dois subshells, leia com atenção!
#o 'cut -d* -f2' evita que o * vindo da listagem chame os arquivos no diretório atual
#o 'grep ]' filtra para não mostrar os ips conectados
rede="`echo $redes | zenity --list --text='Escolha uma rede:' --column 'Redes' $(hamachi list|cut -d* -f2|grep ])`"
#Dois cut para remover os [ ]
rede="$(echo $rede | cut -d[ -f2 | cut -d] -f1)"
echo $rede
}
#Função para juntar-se a uma rede.
#Chama o zenity para conseguir um nome para a rede
#e depois para conseguir uma senha para a rede.
#Depois informa via zenity o resultado do comando join do hamachi
join()
{
red_nom=`zenity --entry --text='Entre com o nome da rede:'`
red_sen=`zenity --entry --text='Entre com a senha da rede:'`
zenity --info --text="`hamachi join $red_nom $red_sen`"
}
#Função para criar uma rede.
#Chama o zenity para conseguir um nome para a rede
#e depois para conseguir uma senha para a rede.
#Depois informa via zenity o resultado do comando create do hamachi
criar_rede()
{
red_nom=`zenity --entry --text='Entre com o nome da rede:'`
red_sen=`zenity --entry --text='Entre com a senha da rede (não deixe em branco!):'`
zenity --info --text="`hamachi create $red_nom $red_sen`"
}
#Usa a função select_net para selecionar uma rede
#e a passa para o hamachi delete
del_rede()
{
rede=`select_net`
zenity --info --text="`hamachi delete $rede`"
}
#Usa a função select_net para selecionar uma rede
#e a passa para o hamachi leave
leave()
{
rede=`select_net`
zenity --info --text="`hamachi leave $rede`"
}
#Usa a função select_net para selecionar uma rede
#e a passa para o hamachi go-online
online()
{
rede=`select_net`
zenity --info --text="`hamachi go-online $rede`"
}
#Usa a função select_net para selecionar uma rede
#e a passa para o hamachi go-offline
offline()
{
rede=`select_net`
zenity --info --text="`hamachi go-offline $rede`"
}
#Submenu para os comandos de rede.
redes()
{
#Inicia a variável de controle com um valor genérico (problemas com "" e " " me levaram a isso)
NETACTION="r"
while [ "$NETACTION" != "Voltar" ]
do
NETACTION=`zenity --list --text="Escolha uma opção:" --column "Opções de Rede" "Entrar em uma rede" "Sair de uma rede" "Anunciar-se em uma rede" "Invisível em uma rede" "Criar rede" "Apagar rede" "Listar redes" "Voltar"`
echo $NETACTION
case $NETACTION in
"Entrar em uma rede") join ;;
"Sair de uma rede") leave ;;
"Anunciar-se em uma rede") online ;;
"Invisível em uma rede") offline ;;
"Criar rede") criar_rede ;;
"Apagar rede") del_rede ;;
"Listar redes") zenity --info --text="Redes atuais:\n$(hamachi list)" ;;
esac
done
}
#Inicia a variável de controle com um valor genérico
ACTION="b"
#Loop principal. Veja que o script não termina se o botão 'cancelar' for clicado.
#É necessário selecionar 'Sair' e clicar em ok.
while [ "$ACTION" != "Sair" ]
do
#Chama o zenity para listar as opções.
ACTION=`zenity --list --text="Escolha uma opção:" --column "Opções" "Executar '/sbin/tuncfg'" "Parar '/sbin/tuncfg'" "Iniciar Hamachi" "Parar Hamachi" "Ver status" "Logar" "Logout" "Escolher nick" "Redes" "Sair"`
#Para informar a ação escolhida. Pode ser útil quando um comando novo 'não funciona'
echo $ACTION
#Trata a ação escolhida.
case $ACTION in
#Executa o tuncfg com poderes de root. gksudo cuida da senha
"Executar '/sbin/tuncfg'") gksudo /sbin/tuncfg ;;
#Mata todos os tuncfg rodando. Seria bom trocar por algo menos bruto?
"Parar '/sbin/tuncfg'") gksudo killall tuncfg ;;
#O '&&' evita um zenity vazio
"Iniciar Hamachi") zenity --info --text="`hamachi start && echo 'Hamachi inicado'`" ;;
"Parar Hamachi") zenity --info --text="`hamachi stop`" ;;
"Ver status") zenity --info --text="`hamachi`" ;;
"Logar") zenity --info --text="`hamachi login`" ;;
"Logout") zenity --info --text="`hamachi logout`" ;;
#Dois subshells, leia com calma
"Escolher nick") zenity --info --text="$(hamachi set-nick `zenity --entry --text='Digite o nick:'`)" ;;
#Um submenu
"Redes") redes ;;
esac
done
Convertendo man pages em arquivos pdf
Mata usuários do FreeNX Server
"Wnslookup" - Monitorando os DNS da Rede
Shell Script para compilar o suporte À Logitech Quickcam Express no Slackware / Vector / Slax Linux
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
E aí? O Warsaw já está funcionando no Debian 13? [RESOLVIDO] (15)
Secure boot, artigo interessante, nada técnico. (4)
copiar library para diretorio /usr/share/..... su com Falha na a... (1)









