Я хотел был бы иметь возможность передать параметры к дистанционной машине. В этом скрипте я хотел chmod некоторые файлы на удаленных компьютерах назначения на основе разрешений, которые я нахожу в тех же файлах на исходном компьютере.передать параметры удаленной машине
Это работает для меня, если машина назначения - это та же машина, на которой я запускаю скрипт (chmod $ perm $ path часть кода работает). Если я пытаюсь выполнить chmod-файлы на удаленном компьютере, это не сработает (ssh root @ "$ {destnode}" chmod $ perm $ path).
Есть еще одна проблема. Этот сценарий не может обрабатывать пробелы в именах файлов/папок. Может ли кто-нибудь помочь мне исправить это?
#!/bin/bash
sourcenode=$1
destnode=$2
path1=/root/test
tmp=/tmp/file-list
ssh [email protected]"${sourcenode}" "find ${path1} -exec stat -c '%a %n' {} \; " > $tmp
cat $tmp | ssh [email protected]"${destnode}" 'cat - > /tmp/file-list '
ssh [email protected]"${destnode}" cat $tmp |
while read perm path
do
#ssh [email protected]"${destnode}" chmod $perm $path
chmod $perm $path
done
Ответ на «handl [in] пробелы» - это указать ваши переменные, когда вы их используете. Вы делаете это для '' $ {destnode} "' уже. Что происходит, когда вы запускаете команду 'ssh' команды? Вы получили сообщение об ошибке? –
Трюк с кавычками работал над именами с пробелами :). Благодарю. Нет. Я не ошибаюсь. Похоже, переменные ($ perm и $ path) становятся пустыми, когда я пытаюсь передать их на удаленный компьютер. – fuzzy186