Hamachi - Controle Gráfico
Publicado por Perfil removido 31/08/2007
[ Hits: 6.237 ]
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
Renomear arquivos de fontes ttf e otf
Script de Inclusão (atualização) de Repositórios para Mandriva 2008.
Script para montar dispositivo Android
Instalação e desinstalação do Flash Player
Nenhum comentário foi encontrado.
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
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
SysAdmin ou DevOps: Qual curso inicial pra essa área? (0)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta