Wie pppd inet-Adresse von Shell-Befehl erhalten
-
19-09-2019 - |
Frage
Ich bin mir nicht sicher, ob es hier posten oder an ServerFault. Wie dem auch sei, ich versuche, um Unternehmens-Firewall zu arbeiten, um einige Medien-Sharing-Site zu verbinden mein Handy 3G-Netzwerk. Ich habe mit einem einfachen Befehl ip route kommen, die pppd der inet-Adresse nehmen, wie es Parameter sind. Aber möchte ich durch das Lesen der inet-Adresse direkt aus dem Skript es ein wenig mehr automatisiert machen, nicht indem sie sie über Kommandozeilenparameter übergeben.
Hier ist das Szenario ist, um es noch deutlicher:
-
Der Befehlsaufruf ab jetzt:
$jumpfirewall xxx.xxx.xxx.xxx
-
Der Befehlsaufruf Ich möchte:
$jumpfirewall
Sie wissen einen Befehl oder Bibliothek, die ich verwenden kann, es von der Kommandozeile zu lesen?
Lösung
Angepasst von cyberciti :
/sbin/ifconfig ppp0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'
Die ifconfig ppp0
werden Informationen für Ihre primäre PPP-Schnittstelle erhalten; die grep
schneidet es auf die Linie nach unten die IP-Adresse enthält; cut
bis der inet addr:
spaltet alles nach bcast:
heraus, so etwas wie 1.2.3.4 Bcast:
geben; und der awk
Anruf wird nur das erste (Leerzeichen getrennt) Feld drucken, die Sie nur die IP-Adresse zu verlassen.
Andere Tipps
pppd
ruft automatisch ein Skript in /etc/ppp/ip-up
, wenn ein Link gebracht. In diesem Skript ist $4
die lokale IP-Adresse der PPP-Verbindung. (Bei einigen Distributionen, /etc/ppp/ip-up
wird die Skripte in /etc/ppp/ip-up.d
zu nennen, mit $PPP_LOCAL
auf die IP-Adresse, so können Sie Ihren Skript platzieren dort).
Auf diese Weise werden Sie nicht von Hand müssen die Skript aufrufen - nur die PPP-Verbindung bringen und es wird automatisch ausgeführt werden. Es gibt ein entsprechendes /etc/ppp/ip-down
Sie Ihre Route rückgängig machen können, wenn die Verbindung nach unten geht.