Я новичок в Linux Shell Script. Я хочу изменить IP-адрес с помощью Linux Shell Script и вызывать его через веб-приложение PHP.
Я закончил свое веб-приложение PHP и сценарий оболочки. Прежде чем они объединятся и будут работать, я хотел бы проверить, может ли скрипт сценария работать правильно.
Мой Linux Shell Script будет хранить 7 переменных, исключая $ 0 (имя скрипта).:
- Файл сетевого интерфейса (
/etc/sysconfig/network-scripts/ifcfg-{XXX}
) - Старый IP-адрес
- Новый IP-адрес
- Маска старой подсети
- Новая маска подсети
- Старые Ворота
- Новые Ворота
Большинство проверок уже было выполнено моим PHP-приложением, так как я новичок в Linux Shell Script, я не хочу делать это в моем сценарии оболочки. Мое PHP-приложение может убедиться, что данные верны и заполнены значениями.
Таким образом, чтобы запустить этот сценарий оболочки, я набираю следующее, чтобы увидеть результаты:
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
команды, он возвращает именно ту команду, которую я хотел. Затем я запускаю все три строки в командной строке и снова проверяю файл, вся информация изменилась!