什么是Linux命令来获得当前的PPTP IP地址?

我有一个Linux脚本,允许我通过一个VPN接口传送一些stream量,并通过另一个接口传送其他stream量(来自不同的IP)。 这是我的脚本:

echo "ip route del default via 192.168.120.10 dev ppp0;" >> /tmp/firewallscript.sh echo "ip route add default via 192.168.1.254 dev eth0;" >> /tmp/firewallscript.sh echo "ip route add table 55 default via 192.168.120.10 dev ppp0;" >> /tmp/firewallscript.sh echo "iptables -t mangle -I PREROUTING 1 -s 192.168.1.40 -j MARK --set-mark 55;" >> /tmp/firewallscript.sh echo "iptables -t mangle -I PREROUTING 1 -s 192.168.1.41 -j MARK --set-mark 55;" >> /tmp/firewallscript.sh echo "iptables -t mangle -I PREROUTING 1 -s 192.168.1.42 -j MARK --set-mark 55;" >> /tmp/firewallscript.sh echo "ip rule add fwmark 55 table 55;" >> /tmp/firewallscript.sh 

由于我的VPN的IP变化很大,我想“参数化”它。 所以,而不是写这行代码:

 echo "ip route del default via 192.168.120.10 dev ppp0;" >> /tmp/firewallscript.sh 

我需要写这样的东西:

 echo "ip route del default via @MyVariableIP dev ppp0;" >> /tmp/firewallscript.sh 

其中@MyVariableIP是ppp0的IP地址。 所以我的问题是:

  1. 我怎么能得到接口的IP地址使用bash,知道接口是ppp0?
  2. 如何修改以前的脚本?

谢谢

  1. 在这个脚本的末尾,你可以在$ ip_of_ppp0variables中获得ip的ppp0
  2. 把这个脚本放在你的前面,用$ ip_of_ppp0replace@MyVariableIP

     n=`ifconfig|grep -B10 'POINTOPOINT' | cut -d " " -f1 ` m=`ifconfig|grep -B8 'POINTOPOINT'|cut -d " " -f12|grep 'addr:1'|cut -d ":" -f2 ` f=`echo $n` l=`echo $m` arr=($f) amm=($l) h=0 for i in "${arr[@]}"; do ip=${amm[$h]} h=`expr $h+1` if [[ "$i" = "ppp0" ]]; then ip_of_ppp0=$ip; fi done echo $ip_of_ppp0;