"Сохранить" удаленный сеанс SSH?

Не отвечаю на это. Но кому-то это может понадобиться (, потому что эта страница показывается в поиске):

должно быть

[Service]
 Restart=always
 RestartSec=3

https://jonarcher.info/2015/08/ensure-systemd-services-restart-on-failure/

12
24.11.2019, 16:14
4 ответа

Вы можете взять подсказку из аналогичного вопроса на StackOverflow и использовать bash Вот документ:

ssh root@host 'bash -s' << EOF
  command1
  command2
  command3
EOF
7
27.01.2020, 19:54

Вы можете использовать cat, чтобы объединить все файлы, а затем передать их в ssh.

cat command1 command2 command3 | ssh root@host 'bash -s'
1
27.01.2020, 19:54

Независимый файловый дескриптор для одного или нескольких SSH соединений

В дополнение кControlPathиControlPersistправильному пути, предложенному ответом муру , я хотел бы представить альтернативу:

Метод

  1. Создайте fifo, который вы будете использовать для выходных данных ssh

    Вы должны создать этот файл по пути, в котором вы уверены

    mkfifo $HOME/sshfifo
    
  2. Запуск длинная -рабочая команда:

    exec 8> >(exec ssh user@host /bin/bash >$HOME/sshfifo
    exec 9<$HOME/sshfifo
    
  3. Теперь вам больше не нужен fifo

    rm $HOME/sshfifo
    
  4. Теперь вы готовы отправлять и получать команды через ваше соединение:

    echo >&8 uptime
    while read -t.002 -r -u 9 answer;do echo "$answer";done
    

    Nota:0.002 secondsможет быть недостаточно при плохом интернет-соединении... Время ожидания может быть бесполезным в зависимости от типа запросов. Вообще это может быть адаптировано к тому, какой диалог присутствует.

    И так далее...

    myremote() {
        echo "$@" >&8
        while IFS= read -t.02 -r -u 9 answer;do
             echo "$answer"
        done
    }
    
  5. Это останется до тех пор, пока вы явно не закроете это соединение:

    exec 8>&-
    exec 9<&-
    

Далее

Это не идеально.Вы можете

  • Привязать STDERR тоже со вторым fifo

    mkfifo $HOME/sshfifo{out,err}
    exec 8> >(exec ssh user@host /bin/bash >$HOME/sshfifoout 2>$HOME/sshfifoerr)
    exec 9<$HOME/sshfifoout
    exec 10<$HOME/sshfifoerr
    rm $HOME/sshfifo{out,err}
    
  • Используйте интерактивный bash, затем уменьшите время ожидания

    mkfifo $HOME/sshfifo{out,err}
    exec 8> >(exec ssh -tT user@host /bin/bash -i >$HOME/sshfifoout 2>$HOME/sshfifoerr)
    exec 9<$HOME/sshfifoout
    exec 10<$HOME/sshfifoerr
    rm $HOME/sshfifo{out,err}
    echo >&8 'set -i;PS1="ReAdY aS BoUnD\\n"'
    while IFS= read -d '' -rn 1 -t.02 -u 9 foo;do echo -n "$foo";done
    while IFS= read -d '' -rn 1 -t.02 -u 10 foo;do echo -n "$foo";done
    

    ... затем наблюдая за /^ReAdY aS BoUnD$/из fd/10в качестве маркера для конца выполнения последней команды , вы можете избежать таймаута для STDERR (-u 10), затем уменьшить таймаут для STDOUT(-u 9 -t.002).

И оттуда

Можно даже открыть несколько соединений для совместного использования

mkfifo $HOME/sshfifo
exec 8> >(exec ssh user1@hostA /bin/bash >$HOME/sshfifo 2>&1)
exec 9<$HOME/sshfifo
rm $HOME/sshfifo

mkfifo $HOME/sshfifo
exec 11> >(exec ssh user2@hostB /bin/bash >$HOME/sshfifo 2>&1)
exec 12<$HOME/sshfifo
rm $HOME/sshfifo

Потом

tee <<<uptime /dev/fd/8 >&11
read -u  9 -t.02 ansA
read -u 12 -t.02 ansB

для отправки одной и той же команды одновременно на оба конца...

3
27.01.2020, 19:54

Вы можете использовать сценарий expect. Он может автоматизировать ssh-соединение и запускать команды на удаленной машине. Этот код должен пролить свет на автоматизацию соединения ssh.

вы ищете что-то подобное. сохраните следующий код в файлеfoo.expect

#login to the remote machine
spawn ssh username@hostname
expect "?assword" { send "yourpassword\r"}

#execute the required commands; following demonstration uses echo command
expect "$ " {send "echo The falcon has landed\r"}
expect "$ " {send "echo The falcons have landed\r"}
expect "$ " {send "echo Will the BFR? land? \r"}

#exit from the remote machine
expect "$ " {send "exit\r"}

запустить какexpect foo.expect

Вы должны ожидать, что приложение запустит этот скрипт. Его можно установить командойapt-get install expect

Эта книга поможет вам изучить сценарий ожидания. Удачного написания сценариев!

4
27.01.2020, 19:54

Теги

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