gpt4 book ai didi

linux - 从 NFS 安装文件夹开始更改 bash 脚本中的网络 ip

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:38:25 26 4
gpt4 key购买 nike

我写了一个简单的 Bash 脚本来更改 Linux 主机的网络地址:

#!/bin/sh
REMOTE_HOST=192.168.2.127 # Default Host address
NEW_IP=192.168.30.33 # New IP I want to set
NEW_GW=192.168.30.1 # New Gateway I want to set

sudo ifconfig eth0 192.168.2.1 # Moving to the right network...
#ping $REMOTE_HOST -c 3 # I can correctly ping the host here...

ssh-copy-id root@${REMOTE_HOST} > /dev/null # ...for my comfort...

# Setting the network with new values for the IP addr and the GW...
COMMAND="sed -i 's@address *\\([0-9.]\\+\\)@address ${NEW_IP}@' /etc/network/interfaces\
&& sed -i 's@gateway *\\([0-9.]\\+\\)@gateway ${NEW_GW}@' /etc/network/interfaces"

ssh root@${REMOTE_HOST} $COMMAND
# done!

# Now restart the network services:
ssh root@${REMOTE_HOST} "/etc/init.d/networking restart &" & # (Note the 2nd '&' !!!)

# Come back to my old IP
sudo ifconfig eth0 192.168.30.10
sudo route add default gw 192.168.30.1

这个脚本几乎可以完美运行,但是:

1) 如果我从我的主文件夹运行它,没问题;如果我从 NFS 共享文件夹运行它,脚本会挂起一两分钟才能正确结束

2) 如果我在主机上重新启动网络时省略第二个“&”,命令将永远不会返回...

问题是:

1) 是什么导致长时间等待(NFS、不同的 IP 地址、不同的网关)?是否有可能解决它?

2) 为什么会这样?我该如何避免呢?

感谢您的帮助,抱歉我的英语不好!

最佳答案

您正在重新启动网络服务,这会断开所有事件连接。

Bash 逐行读取您正在运行的文件。由于 NFS 是网络文件系统,这将终止与文件的连接。因此,系统会等待(实际上不能)在 networking restart 之后执行这些行,直到重新建立连接。

相反,您应该首先制作整个脚本的本地副本,然后在本地运行它。您也可以为此编写一个脚本 ;-)

关于linux - 从 NFS 安装文件夹开始更改 bash 脚本中的网络 ip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12145875/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com