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

edo*_*tan 3 scripting linux bash centos rename

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

hmo*_*liu 7

您可以为此使用 ssh。例如:

for server in server1 server2 server3; do ssh $server mv oldfilename newfilename; done
Run Code Online (Sandbox Code Playgroud)

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

export MYLISTOFSERVERS="server1
server2
server3
...
servern
"
Run Code Online (Sandbox Code Playgroud)

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

runforeachserver () {
for server in $MYLISTOFSERVERS; do
ssh $server "$@"
done
}
Run Code Online (Sandbox Code Playgroud)

所以你可以在你想为你的每台服务器执行任务时调用它。例如,根据需要重命名文件:

runforeachserver mv oldfilename newfilename
Run Code Online (Sandbox Code Playgroud)

或(只是为了向您展示如何转义命令以通过 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
Run Code Online (Sandbox Code Playgroud)

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