Hamachi - Controle Gráfico
Publicado por Perfil removido 31/08/2007
[ Hits: 6.248 ]
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
Script de Inclusão (atualização) de Repositórios para Mandriva 2008.
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (6)