In a shellscript, I'd like to set the IP of my box, run a command, then move to the next IP. The IPs are an entire C block.
The question is how do I set the IP of the box without editing a file? What command sets the IP on Slackware?
Thanks
如其他答案中所述,您可以使用 ifconfig 命令或 ip 命令。ip 是一个更强大的命令,我更喜欢使用它。一个完整的脚本循环通过一个完整的 C 类子网添加 IP,做一些事情,然后删除它。请注意,它不使用 .0 或 .255,它们是子网的网络和广播地址。此外,当使用 ip 命令添加或删除地址时,最好也包括掩码宽度(地址末尾的 /24)。
#!/bin/bash
SUBNET=192.168.135.
ETH=eth0
for i in {1..254}
do
ip addr add ${SUBNET}${i}/24 dev ${ETH}
# do whatever you want here
ip addr del ${SUBNET}${i}/24 dev ${ETH}
done
它应该是这样的:ifconfig eth0 192.168.0.42 up
用你网卡的网络接口替换eth0,显然ip地址适应你的需要,up只需要一次,但如果你每次运行它也没有什么坏处。
我不太了解 Slackware,我上次使用它是在十年前。然而,任何主流的 Linux 发行版都应该有“ifconfig”程序或“ip”程序或两者都有。你需要拥有root权限,所以要么成为root(例如使用su),要么使用'sudo'程序,如果你知道怎么做的话。让我们先用'ip'来做。
ip addr add 10.1.2.3 dev eth0
将设备 eth0(通常是主有线网络适配器)设置为 IP 地址 10.1.2.3。完成后,您可以再次从此适配器中删除地址...
ip addr del 10.1.2.3 dev eth0
ifconfig 的工作方式有点不同,
ifconfig eth0 10.1.2.3 netmask 255.255.255.0
再次设置设备 eth0,IP 地址为 10.1.2.3
根据您想要这些地址的用途,您可能还需要知道如何设置手动路由,以便您的 IP 数据包实际上可以传送到任何目的地。
在一行中,例如: ifconfig eth0 192.168.10.12 netmask 255.255.255.0