Como obter o endereço INET PPPD do comando Shell
-
19-09-2019 - |
Pergunta
Não tenho certeza se devo publicá -lo aqui ou no ServerFault. De qualquer forma, estou tentando trabalhar no firewall da empresa para conectar -se a algum site de compartilhamento de mídia usando a rede 3G do meu telefone. Eu criei um comando simples de rota IP que pega o endereço INET do PPPD como seu parâmetro. Mas, quero torná -lo um pouco mais automatizado lendo o endereço INET diretamente do script, não passando -o via parâmetro de linha de comando.
Aqui está o cenário, para torná -lo mais óbvio:
A invocação de comando a partir de agora:
$jumpfirewall xxx.xxx.xxx.xxx
A invocação de comando que eu quero:
$jumpfirewall
Você conhece algum comando ou biblioteca que eu possa usar para lê -lo na linha de comando?
Solução
Adaptado de Cyberciti:
/sbin/ifconfig ppp0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'
o ifconfig ppp0
obterá informações para sua interface PPP primária; a grep
reduz a linha que contém o endereço IP; a cut
divide tudo depois inet addr:
até bcast:
, dando algo como 1.2.3.4 Bcast:
; e a awk
A chamada imprimirá apenas o primeiro campo (separado pelo espaço), deixando você apenas com o endereço IP.
Outras dicas
pppd
chama automaticamente um script em /etc/ppp/ip-up
Quando um link é criado. Neste script, $4
é o endereço IP local do link PPP. (Em algumas distribuições, /etc/ppp/ip-up
está pronto para chamar os scripts em /etc/ppp/ip-up.d
, com $PPP_LOCAL
Defina para o endereço IP, para que você possa colocar seu script lá).
Dessa forma, você não precisará chamar manualmente o script - basta criar o link PPP e ele será executado automaticamente. Há um correspondente /etc/ppp/ip-down
Você pode usar para desfazer sua rota quando o link diminuir.