假设你有一堆可以是用的ip(对外ip),可改变本机ip进行网络连接执行一次程序。
比较幸运的是,我位于一个局域网内,而局域网的每个ip都是独立的ip,这样就可以侦测局域网可用ip来执行程序了。
由于其他主机可能屏蔽ping,这里使用arp检测某一ip是否未被其他主机使用。
下面给出bash脚本
#!/bin/bash
keys="keywords.txt"
jar="google.jar" #我要运行一个java程序
net_pfx="xx.xx.xx" #局域网ip前缀
network=1
subip=1
if [ ! -f $key ]; then
echo "$keys not exsist"
exit 1
fi
if [ ! -f $jar ]; then
echo "$jar not exsist"
exit 1
fi
if [ `id -u` -ne 0 ]; then
echo "must run by root"
exit 2
fi
while read key
do
while arping -c1 -w2 -Ieth1 "$net_pfx$network.$subip"
|| grep "address $net_pfx$network.$subip" /etc/network/interfaces
do
let subip++
if [ $subip -ge 254 ] ; then
if [ $ network -gt 3 ]; then
echo "all ips traversed"
return 0
fi
subip=1
let network++
fi
done
sed -i s/address.*/"address $net_pfx$network.$subip"/ /etc/network/interfaces
sed -i s/gateway.*/"gateway $net_pfx$network.254"/ /etc/network/interfaces
/etc/init.d/networking restart
java -jar $jar "$key"
done < $keys