Есть две системы - локальная и удаленная.
На локальной системе запускаю скрипт:
#!/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.
Команды стоит соединять &&, дабы если одна из них не сработает, остальные не запускались бы.
Комментариев нет:
Отправить комментарий