원격 SSH 세션을 "저장"하시겠습니까?

원격 SSH 세션을 "저장"하시겠습니까?

스크립트에서 이 작업을 수행하려고 합니다. 원격 호스트에서 몇 가지 명령을 실행해야 합니다. 현재 나는 이것을하고 있습니다 :

ssh root@host 'bash -s' < command1
ssh root@host 'bash -s' < command2
ssh root@host 'bash -s' < command3

하지만 이는 서버에 반복적으로 연결해야 하므로 명령 처리 사이에 많은 시간이 추가된다는 의미입니다. 나는 다음과 같은 것을 찾고 있습니다 :

varSession=$(ssh root@host 'bash -s')
varSeesion < command1
varSeesion < command2
varSeesion < command3

이번에도 스크립트를 통해 이러한 명령을 실행해야 합니다. 살펴봤지만 screen스크립트에서 사용할 수 있는지 잘 모르겠습니다.

답변1

당신은 사용할 수 ControlMaster있습니다ControlPersist명령 종료 후에도 연결이 유지되도록 허용합니다.

와 함께 사용되는 경우 ControlMaster초기 클라이언트 연결이 닫힌 후 기본 연결이 백그라운드에서 열려 있어야 함을 지정합니다(향후 클라이언트 연결을 대기). 로 설정하면 no기본 연결이 백그라운드에 배치되지 않고 초기 클라이언트 연결이 종료된 후 즉시 종료됩니다. yes또는 로 설정하면 0기본 연결은 백그라운드에서 무기한으로 유지됩니다( ssh -O exit" "와 같은 메커니즘에 의해 종료되거나 닫힐 때까지). 초 단위 시간으로 설정하거나 에 기록된 형식으로 설정된 경우 sshd_config(5)백그라운드 마스터 연결은 지정된 시간 동안 유휴 상태(연결된 클라이언트 없음)를 유지한 후 자동으로 종료됩니다.

따라서 첫 번째 SSH 명령은 연결을 위한 제어 파일을 설정하고 나머지 두 명령은 제어 파일을 통해 연결을 재사용합니다. 다음과 같은 것이 있어야 ~/.ssh/config합니다:

Host host
    User root
    ControlMaster auto
    ControlPath /tmp/ssh-control-%C
    ControlPersist 30   # or some safe timeout

그리고 스크립트에는 다른 변경 사항이 필요하지 않습니다.

답변2

팁부터 시작해 보세요.유제StackOverflow 및 bash 사용여기 문서:

ssh root@host 'bash -s' << EOF
  command1
  command2
  command3
EOF

답변3

스크립트를 사용할 수 있습니다 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

를 사용하여 모든 파일을 연결 cat한 다음 ssh.

cat command1 command2 command3 | ssh root@host 'bash -s'

관련 정보