Hamachi - Controle Gráfico
Publicado por Perfil removido 31/08/2007
[ Hits: 6.287 ]
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
Faz uma busca no OpenSubtitles por um filme.
dcalc: Calculadora Com Conversão de Bases
Verificando quais hosts estão ativos na rede
Nenhum comentário foi encontrado.
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Máquinas Virtuais com IP estático acessando Internet no Virtualbox
Criar entrada no GRUB para uma ISO Linux (5)
Ruído no Microfone (ALC287 - AMD Ryzen 5 7535HS) no Debian 12.9 (15)