제목에 명시된 대로 컴퓨터 A에서 실행되어야 하는 스크립트를 작성 중입니다. 컴퓨터 A는 ssh
컴퓨터 B에서 프로그램 B를 실행하고 세션을 종료한 다음 ssh
(프로그램 B가 컴퓨터 B에서 여전히 실행 중인 상태에서) 컴퓨터 A에서 프로그램 A를 실행해야 합니다.
Expect를 사용해야 하며 이를 수행하려면 SSH 비밀번호를 사용해야 합니다.
지금까지 시도한 방법은 다음과 같습니다(작동하지 않음).
#!/bin/bash
#checks to see if programA is already running
if pidof -x "programA" >/dev/null; then
echo "Program A already running"
exit 1
fi
spawn ssh username@{$1}
/usr/bin/expect "assword:"
send "password"
./programB & # run programB in the background
exit
./programA
두 컴퓨터 모두에서 프로그램을 종료해야 하는 스크립트는 다음과 같습니다.
pkill programA
spawn ssh username@{$1}
/usr/bin/expect "assword:"
send "password"
pkill programB
exit
프로그램을 시작하는 스크립트가 예상대로 작동하지 않습니다. 컴퓨터 A에서 프로그램 A와 프로그램 B를 시작합니다. 또한 세션을 분리해야 한다는 것도 알았습니다 ssh
. 그렇지 않으면 컴퓨터 B에서 세션을 종료하면 프로그램 B가 종료됩니다.
누군가 내가 원하는 것을 수행하고 내가 잘못되고 있는 부분을 설명하는 스크립트를 제공할 수 있습니까?
미리 감사드립니다.
답변1
거의 괜찮은 것 같습니다. 다음을 시도해 보십시오(분명히 테스트되지 않음).
#!/bin/bash
#checks to see if programA is already running
if pidof -x "programA" >/dev/null; then
echo "Program A already running"
exit 1
fi
expect <<EOF
spawn ssh username@${1}
expect "assword:"
send "password\r"
expect "$ "
send "nohup ./programB &\r" # run programB in the background
exit
EOF
./programA
편집: ssh username@{$1} 주소에 대한 의견