我目前正在尝试创建一个脚本,该脚本将在新的IP范围内启动vpn服务器。我有多台服务器,因此如果两台服务器使用相同的范围,则可能会发生冲突。
因此,我想随机启动服务器启动的IP范围。我希望在生成的配置文件中以下列方式随机化IP;
ifconfig 10.xxx.yyy.1 255.255.255.248
server 10.xxx.yyy.0 255.255.255.248
我使用的shell非常受限制,因此许多实用程序(如od)无法创建随机数。但是awk可用,所以我认为这是合适的。我已经尝试创建一个命令,用0到255之间的随机数替换xxx和yyy,但我还没有成功。任何人都可以帮我这个吗?
awk '{var = int(rand() * 256); var2 = int(rand() * 256); gsub(/xxx/, var ); gsub(/yyy/, var2 ) ; print}' /tmp/vpn.conf
此命令将值更改为
ifconfig 10.125.248.1 255.255.255.248
server 10.74.196.0 255.255.255.248
这显然是不可取的,因为xxx和yyy都应该相同,例如
ifconfig 10.25.64.1 255.255.255.248
server 10.25.64.0 255.255.255.248
任何人都可以帮助awk执行预期的功能吗?或者,任何简化的随机数脚本也足够了,但由于缺少可用的shell实用程序,我不希望这样做。
提前感谢您的帮助!
答案 0 :(得分:3)
生成BEGIN
块中的随机数。
awk 'BEGIN{var = int(rand() * 256); var2 = int(rand() * 256)} {sub(/xxx/, var ); sub(/yyy/, var2 ) ; print}' /tmp/vpn.conf
此外,我没有理由使用gsub
,只使用sub
,因为特定模式的每一行只有一次替换。