如何使用脚本在 Linux 上重命名远程文件

如何使用脚本在 Linux 上重命名远程文件

我想要一个 (bash) 脚本来重命名多个远程 Linux 服务器上的文件,您知道该怎么做吗?谢谢。

答案1

您可以使用 ssh 来实现这一点。例如:

for server in server1 server2 server3; do ssh $server mv oldfilename newfilename; done

您可能希望将服务器列表存储在环境变量中:

export MYLISTOFSERVERS="server1
server2
server3
...
servern
"

以及(例如)bashrc(或专用脚本)中的一个函数:

runforeachserver () {
for server in $MYLISTOFSERVERS; do
ssh $server "$@"
done
}

因此,每当您想为每个服务器执行任务时,都可以调用它。例如,根据需要重命名文件:

runforeachserver mv oldfilename newfilename

或者(仅向您展示如何通过 ssh 传递命令):

runforeachserver date -d \"month ago\" +\"%Y-%m-%d\"
2011-04-04
2011-04-04
2011-04-04
2011-04-04
2011-04-04
2011-04-04

显然,这可以像您希望的那样强大(启用服务器名/sshport 数组)、语法检查等......

答案2

虽然不是 bash 脚本,但你也可能想尝试集群SSH.它将帮助你同时在多台服务器上执行相同的命令。

答案3

您可以使用单行 perl:

perl -lne 'system("/usr/bin/ssh -l username $_ command")' computers

计算机是文件每行一个 IP 地址,命令是您要运行的实际命令。(根据需要修改 ssh 二进制文件的路径,出于安全原因请使用绝对路径)

您还应该设置 SSH 密钥。您可以使用 ssh-copy-id 来实现这一点,这样您就不需要在每次运行脚本时为每个服务器输入密码。

ssh-keygen
ssh-copy-id username@hostname

相关内容