Hamachi - Controle Gráfico

Publicado por Perfil removido 31/08/2007

[ Hits: 5.939 ]

Download hamachi-control




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).

  



Esconder código-fonte

#!/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

Scripts recomendados

Reduz ou aumenta o tamanho da imagem

SQ - simulador do comando seq

Inventário de Hardware

Restaurar base de dados PostgreSQL

Simples Verificador de E-mail Gmail


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário