Назад | Перейти на главную страницу

как переименовать удаленный файл в Linux с помощью скрипта

Я хотел бы иметь сценарий (bash) для переименования файла на нескольких удаленных серверах Linux. Есть идеи, как это сделать? Спасибо.

Для этого вы можете использовать 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

Очевидно, это может быть настолько надежно, насколько вы хотите (включение массивов servername / sshport), проверки синтаксиса и т. Д.

Вы можете использовать однострочный Perl:

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

где компьютеры файл с одним IP-адресом в каждой строке, а команда - это команда, которую вы хотите запустить. (измените путь к вашему двоичному файлу ssh по мере необходимости, из соображений безопасности используйте абсолютный путь)

Вам также следует настроить SSH-ключи. Вы можете использовать ssh-copy-id для этого, поэтому вам не нужно будет вводить пароль каждый раз при запуске скрипта для каждого сервера.

ssh-keygen
ssh-copy-id username@hostname

Хотя это не сценарий bash, вы также можете попробовать ClusterSSH. Это поможет вам выполнять одну и ту же команду на нескольких серверах одновременно.