1

我目前正在尝试创建一个脚本,该脚本将在一个新的 IP 范围内启动一个 vpn 服务器。我有多个服务器,因此如果 2 个服务器使用相同的范围,则可能会发生冲突。

因此,我想随机化服务器启动的 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 实用程序,我不希望这种工作。

提前感谢您的帮助!

4

1 回答 1

3

BEGIN在块中生成随机数。

awk 'BEGIN{var = int(rand() * 256); var2 = int(rand() * 256)}  {sub(/xxx/, var ); sub(/yyy/, var2 ) ; print}' /tmp/vpn.conf

此外,没有理由使用gsub,只需使用,sub因为特定模式的每一行只有一个替换。

于 2012-06-02T16:40:10.100 回答