LINUX.ORG.RU
ФорумAdmin

удаленное управление по ssh


0

1

подключаюсь по ssh

 ssh user@host 'command'; 

как после выполнения этой команды результат выполнения неких операций записать в файл и потом оперировать с ними на исходной консоли? например там я открываю файл и записываю в переменную результат, а после хочу на своей машине иметь значение этой переменной


ну или неткатом

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

тоесть просто поместить значение в переменную сразу и все? звучит просто=) а если у меня там несколько действий? и несколько значений соответственно

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

а если у меня там несколько действий? и несколько значений соответственно

по ситуации: массив, eval, ...

например:

ssh user@host 'echo "A=5"; echo "B=6"; echo "C=7"' > /tmp/file.vars
. /tmp/file.vars
rm /tmp/file.vars
echo "$A $B $C"
5 6 7

или

eval `ssh user@host 'echo "A=5;"; echo "B=6;"; echo "C=7;"'`
echo "$A $B $C"
5 6 7

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

думается мне, массив проще (особенно, в тех шеллах, где строка это и есть массив)

% var=$(ssh host "echo 5; echo 6; echo 7")
% echo $var
5
6
7

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

вот теперь встает вопрос как на удаленной машине выполнить sudo?

a=`ssh user@192.168.10.18 'sudo rm -rf /etc/hosts; sudo cp /home/user/hosts /etc/'`
шлет меня нахер

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

a=`ssh user@192.168.10.18 'sudo rm -rf /etc/hosts; sudo cp /home/user/hosts /etc/'`

a=`ssh -t user@192.168.10.18 'sudo rm -rf /etc/hosts; sudo cp /home/user/hosts /etc/'`

uspen ★★★★★
()
Ответ на: комментарий от bykva

как на удаленной машине выполнить sudo?

man sudoers на тему NOPASSWD;

или expect :) Есть скрипт autoexpect - запускаешь его, делаешь действия ручками, получаешь скрипт автоматизации, где впоследствии меняешь только константы. Но это на любителя :)

MKuznetsov ★★★★★
()
Ответ на: комментарий от bykva

по капле будешь вопросы задавать?

эта конструкция бессмысленна.

a=`ssh user@192.168.10.18 'sudo rm -rf /etc/hosts; sudo cp /home/user/hosts /etc/'`

О настройке sudo уже сказали, иначе заходи как root

ssh root@192.168.10.18 'cat /home/user/hosts > /etc/hosts'

sdio ★★★★★
()

В целом, все что выше - хорошо, но я бы реализовывал через файл. К примеру так:

ssh user@host runcomand

команду запускать следует в screen, внутри команды делал бы вывод в определенный файл чего надо, либо перенаправлением >

после чего

scp user@host:/path/to/file ./

и дальше разбирался с ним локально.

Просто если у вас повиснет соединение или обрубится сеть - потеряете данные, которые не успели передаться, а скачивание файла и его целостность можно проконтроллировать.

BaBL ★★★★★
()
Ответ на: комментарий от MKuznetsov

спасибо за autoexpect, не всегда железки с авторизацией по ключам есть

zolden ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.