Переменная для команды SCP в скрипте

Вам нужно быть более осторожным, если у вас есть имена файлов, содержащие пробелы. В этом случае используйте массив:

input_files=( "file with space."*.txt )
cat "${input_files[@]}" >> out_file.bak
0
20.05.2019, 11:10
3 ответа

Я нашел решение.

Оказывается, эта переменная имела в конце прикрепленную "\r".

Я решил эту проблему с помощью команды tr.

cmd=$( ssh -t some_server_name1 ' cd /opt/automation/repository/hosts/ ; out=$( ls -1tr | tail -n 1 ) ; sudo cp $out ~/ ; ls -1tr ~/ | tail -n 1 ' )
cmdv=$( echo "$cmd" | tr -d '\r' )
1
28.01.2020, 02:40

Похоже, что каталог /home/some _username/hosts.merged.1558094140821/ не существует или не имеет разрешений на чтение/выполнение для «some _username». Может быть хорошей идеей указать желаемое имя пользователя для scp, на случай, если на удаленном сервере осуществляется доступ не к тому пользователю.

Например:

scp -r remote_username@some_server_name1:~/"$cmdv".
0
28.01.2020, 02:40

Ваш скрипт извлечет вам имя последнего измененного файла из местоположения /opt/automation/repository/hosts/на сервереsome_servername1

И когда вы выполняете scp, вы игнорируете путь и выбираете имя файла.

Измените команду с

scp -r some_server_name1:~/"$cmdv"

-

scp -r some_server_name1:/opt/automation/repository/hosts/"$cmdv"

Надеюсь, это решит проблему.

0
28.01.2020, 02:40

Теги

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