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

我想有一个(bash脚本重命名多个远程Linux服务器上的文件任何想法如何做? 谢谢。

你可以使用ssh。 例如:

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

您可能希望有一个存储在环境variables中的服务器列表:

 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 

显然这可以像你想的那样健壮(启用servername / sshport数组),语法检查等等。

虽然不是bash脚本,但您也可以尝试使用ClusterSSH 。 它将帮助您在多个服务器上同时执行相同的命令。

你可以使用一行perl:

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

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

你也应该设置SSH密钥。 你可以使用ssh-copy-id,这样你每次运行脚本时都不需要input密码。

 ssh-keygen ssh-copy-id username@hostname