Linux – how to rename a remote file on linux with script

bashcentoslinuxrenamescripting

I would like to have a (bash) script to rename a file on multiple remote linux servers
any idea how to do it?
thanks.

Best Answer

You can use ssh for that. For example:

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

You may want to have a list of servers stored in a environment variable:

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

and a function (for example) in your bashrc (or a dedicated script):

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

so you can call it whenever you want to do tasks for each of your servers. For example rename files as you wanted:

runforeachserver mv oldfilename newfilename

or (just to show you how to scape the command to pass through 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

Obviously this can be as robust as you wish (enabling arrays of servername/sshport), syntax checks, etc...