LINUX.ORG.RU
ФорумAdmin

Удалённое выполнение команд [SSH]

 , ,


1

1

Здравствуйте!
Есть необходимость скопировать архив по ssh с одного хоста на другой, посчитать md5 сначала на одном хосте, затем на другом и далее сравнить эти суммы на первом. Делаю bash скриптом так:

md1=`md5 -q ./*.7z`
echo $md1

ssh -t $user@$host 'dd of=/home/$user/$name < ./$name ; md2=`/usr/bin/md5sum  ./*7z`'
echo $md2
patebin: http://pastebin.com/uKji9xWX
Но хост2 не хочет отдавать в переменную md5 сумму. Пробовал сделать это по-разному, но никак не получается. Первый хост - freebsd, второй - linux.



Последнее исправление: Grotesque (всего исправлений: 4)

'dd of=/home/$user/$name < ./$name; ... '

Это я не понял. Если ты пытался изобразить копирование с одного хоста на другой, то ...

sdio
()
Ответ на: комментарий от Gotf

Да, это логично. Но неужели нет способа как-то запомнить эту переменную на первой машине? К примеру, я получаю stdout со второй машины на первую, вот может как-то через stdout формировать переменную уже на первой? По-моему, что так костыль, что файл со второй перекидывать на первую :(

Grotesque
() автор топика
Ответ на: комментарий от sdio

А чего непонятного-то? Простое «перемещение» файла побайтово через dd =) Это можно сделать, наверно, правильнее через scp, но я не уверен, что через scp можно выполнять команды удалённо, поэтому я остановился на вот таком варианте :) И да, он действительно работает :)

Grotesque
() автор топика
Ответ на: комментарий от sdio

Пардон, я попытался ненамеренно ввести Вас в заблуждение. Конечно, я выполняю «без ковычек» и в отдельной ssh-сессии (например):

 dd of=/home/$user/$name < ./$name 
и только затем пытаюсь сделать финт ушами с md5sum.

Grotesque
() автор топика
md1=$(file.7z)
scp file.7z user@host:file.7z
md2=$(ssh user@host md5sum file.7z)

Только смысла в этом нет, scp нормально всё скопирует, контролировать дополнительно не надо.

Legioner
()
Ответ на: комментарий от sdio

Не получается, я пробовал 100500 разных вариаций. Сейчас попробую ещё раз :)

Grotesque
() автор топика
Ответ на: комментарий от Legioner

Да? Хмм, я просто не углублялся в документацию SCP поэтому не был уверен, что оно гарантированно доставит байт к байту :) Ну и плюс ко всему это лишь небольшой кусочек скрипта, на самом деле мне нужно ещё много всего выполнять удалённо и поэтому я решил всё делать в одной сессии, в том числе передавать файл, ну и заодно посчитать его сумму :)

Grotesque
() автор топика
Ответ на: комментарий от Legioner

Всё получилось! Всем неравнодушным большое спасибо! :) Извиняюсь, что пришлось потратить ваше время на такой, как оказалось, пустяковый вопрос.

Grotesque
() автор топика

Есть необходимость скопировать архив по ssh с одного хоста на другой, посчитать md5 сначала на одном хосте, затем на другом и далее сравнить эти суммы на первом. Делаю bash скриптом так:

а rsync сломалась, да?

Но хост2 не хочет отдавать в переменную md5 сумму.

ещё бы. Через какой атсрал переменная md2 поедет с одного хоста на другой?

Не. Тебе надо в два этапа:

1. передать файл

2. передать md5

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

Хмм, я просто не углублялся в документацию SCP поэтому не был уверен, что оно гарантированно доставит байт к байту

какую чушь только не придумают…

emulek
()
Ответ на: комментарий от Grotesque

Гарантированно scp доставить возможности не имеет просто потому, что уборщица может выдернуть сетевой кабель во время передачи файла. Поэтому сразу после вызова scp тебе надо проверить $?, чтобы он был равен 0. Но если scp вернулся без ошибок, то всё будет нормально (ну разве что удалённый жёсткий диск будет сбоить, но, наверное, это учитывать не стоит).

Legioner
()
Последнее исправление: Legioner (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.