Страницы

Поиск по вопросам

воскресенье, 7 июля 2019 г.

Двунаправленные переменные через ssh

Есть две системы - локальная и удаленная.
На локальной системе запускаю скрипт:
#!/bin/bash
login=dev #login for ssh remote server host=192.168.1.1 #host remote server r_path=/home/dev/files/ #folder remote server l_path=/home/dev/from_server #local folder tar_name=archive.tar #archive name for files
ssh $login@$host " cd $r_path pwd tar -cvf $tar_name ./* md5sum $tar_name "
Переменные со скрипта на удаленную систему передаются. Все отлично.
Получаю в вывод md5 строку удаленного архива и мне ее надо обработать на локальной системе. Как эту строку передать в переменной и обработать уже на локальной машине?
UPD1: Если я пытаюсь присвоить переменную для md5sum,
ssh $login@$host " cd $r_path tar -cvf $tar_name ./* md5=$(md5sum $tar_name) echo $md5 " echo $md5
то она почему-то не выводится:


Ответ

На самом деле на удалённую систему переменные не «передаются», а подставляются на локальной машине в строку команды и уже затем вся команда отправляется на удалённый хост.
А присвоить вывод команды ssh переменной можно точно также как и результат любой другой команды, с помощью $() или же по-старинке ``
MD5_SUM="$(ssh $login@$host "cd $r_path && tar -cf $tar_name ./* && md5sum $tar_name" )"
Замечания:
Весь остальной вывод из команды следует убрать или перенаправить в stderr. Команды стоит соединять &&, дабы если одна из них не сработает, остальные не запускались бы.

Комментариев нет:

Отправить комментарий