我是Linux Shell脚本的新手。我想通过Linux Shell脚本更改IP地址,并由PHP Web应用程序调用。
我已经完成了我的PHP Web应用程序和shell脚本。在它们组合在一起工作之前,我想测试Shell脚本是否可以正常运行。
我的Linux Shell脚本将存储7个变量,不包括$ 0(脚本名称):
- 网络接口文件(
/etc/sysconfig/network-scripts/ifcfg-{XXX}
) - 旧IP地址
- 新的IP地址
- 旧子网掩码
- 新的子网掩码
- 老门户
- 新网关
我的PHP应用程序已经执行了大多数检查,因为我是Linux Shell脚本的新手,我不想在我的shell脚本上执行此操作。我的PHP应用程序可以确保数据正确并填充值。
因此,要运行此Shell脚本,请键入以下内容以查看结果:
sh ./ipchanger.sh /etc/sysconfig/network-scripts/ens32 192.168.1.18 192.168.1.201 32 24 192.168.1.1 192.168.1.1
含义:
- 指定目标网络脚本文件。
- 将IP更改
192.168.1.18
为192.168.1.201
。 - 将子网掩码更改
255.255.255.255
为255.255.255.0
。
实际上它将运行以下命令:
sudo sed -i -r "s/$currentIpAddress/$newIpAddress/g" $fileName
sudo sed -i -r "s/$currentSubnetMask/$newSubnetMask/g" $fileName
sudo sed -i -r "s/$currentGateway/$newGateway/g" $fileName
它不返回任何错误,并且看起来很好,因为网络脚本文件的最后修改日期已更新。但是当我打开文件时,没有任何改变。
然后我echo
是命令,它返回我想要的确切命令。然后我通过命令提示符运行所有三行并再次检查文件,所有信息都已更改!
echo $SHELL
或ps -p $$
在两个界面中确认它们是相同的。