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

Необходимо сделать chown -R www-data /var/www/ (-R означает рекурсивный).

0
17.05.2012, 12:38
2 ответа

Необходимо попробовать:

command=$(ssh -q user@host 'ls "/usr/local/username/'$folder'" | wc -l')

Вы не можете действительно вложить обратные галочки (и я не уверен, почему Вы хотели к этому так или иначе).

2
28.01.2020, 02:21

Это может быть намного более просто. Я понятия не имею, с чем Вы - Тринг, чтобы сделать {print $folder}: фигурные скобки не имеют никакого смысла здесь, и при попытке включать $folder в строке Вы просто записали бы $folder. Вы не должны анализировать вывод ls, это очень редко полезно и часто перестало работать.

if ! ssh user@host "test -e '/usr/local/username/$folder'"; then
  # the file doesn't exist

Обратите внимание, что имя файла должно быть заключено в кавычки для удаленной оболочки. Я главным образом заботился об этом в своей команде выше путем окружения имени файла в удаленной команде с одинарными кавычками, но который только работает если $folder самостоятельно не содержит одинарных кавычек. Если Ваша локальная оболочка является ударом, ksh93 или zsh, используйте это вместо этого, для заключения в кавычки любой одинарной кавычки:

q=\'\\\'\'
if ! ssh user@host "[ -d '/usr/local/username/${folder//\'/$q}' ]"; then

Другой подход, который обычно более удобен, должен смонтировать удаленную файловую систему с sshfs и работой над ним через нормальный интерфейс файловой системы. Я рекомендую это, если Вы не работаете с большим количеством удаленных серверов одновременно.

mkdir /path/to/mount/point
sshfs user@host /path/to/mount/point
if ! [ -d "/usr/local/username/$folder" ]; then
2
28.01.2020, 02:21

Теги

Похожие вопросы