Hamachi - Controle Gráfico

Publicado por Perfil removido 31/08/2007

[ Hits: 6.248 ]

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

tagman - Editor de tags

Fatsort Zenity

Script de Inclusão (atualização) de Repositórios para Mandriva 2008.

Propriedades do computador

Servidor em standby


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts