SSH를 통해 원격 명령을 실행하고 원격 명령을 보내기 전에 일시 중지해야 함

SSH를 통해 원격 명령을 실행하고 원격 명령을 보내기 전에 일시 중지해야 함

내 임무는 원격 시스템에서 실행되는 명령을 자동화하는 것입니다. 지금까지 ssh 명령 구문을 대부분 알아냈는데, 문제는 마지막에 원격 명령을 추가하면 연결은 되지만 원격 명령을 실행하지 않고 멈춘다는 점입니다. 로그인이 완전히 완료되기 전에 명령이 실행되기 때문인 것 같습니다. 원격 시스템은 일반적인 Linux 시스템이 아닙니다. Watchguard 방화벽이기 때문에 독점 운영체제이기 때문에 일이 더 어려워집니다. 명령을 입력하기 전에 5초 또는 10초 동안 일시 중지되는 스크립트를 만들 수 있는 방법이 있습니까? 내 상사는 시스템에 SSH를 연결하고 명령을 실행하는 프로세스를 자동화할 수 있는 앱을 언급했지만 그것이 무엇인지 기억하지 못했습니다. 따라서 Linux에서 이 작업을 수행할 수 있는 앱을 아는 사람이 있다면 괜찮습니다. 도.

답변1

다음 예상 스크립트를 사용하십시오(설치해야 할 수도 있음).예상되는첫 번째):

#!/usr/bin/expect
spawn ssh -l myuser 10.0.0.1
expect "assword:"
send "mypassword\r"
expect "#"
sleep 5
send "command\r"
expect "#"
send "exit\r"

스크립트는 명령을 실행 하고 ssh 세션에 ssh -l myuser 10.0.0.1문자열이 나타날 때까지 기다린 다음 Enter 키로 끝나는 비밀번호를 입력합니다(대문자 및 소문자 버전을 수용하기 위해 의도적으로 "password:" 프롬프트에서 "p"를 생략했습니다). 그런 다음 운영 체제 프롬프트가 나타날 때까지 기다리고(운영 체제 프롬프트가 아닌 경우 적절하게 변경해야 함) 5초 더 기다렸다가 command를 입력하고 Enter 키를 누릅니다. 메시지가 나타날 때까지(즉, 명령이 완료될 때까지) 다시 기다렸다가 입력한 다음 Enter 키를 눌러 세션을 종료하고 연결을 끊습니다.assword:\r#exit

관련 정보