#!/usr/bin/expect가 작동하지 않습니다

#!/usr/bin/expect가 작동하지 않습니다

이것은 아마도 쉬운 질문일 것입니다. 그러나 #!/usr/bin/expect 인터프리터 라인을 무시하는 것처럼 보이는 실행 가능 비트를 추가한 간단한 예상 스크립트가 있습니다. 게다가 변수를 에코하면 비어 있기 때문에 변수가 설정되지 않은 것 같습니다...

#!/usr/bin/expect -f
set device "1.1.1.1"
set user   "testuser"

spawn ssh $user@$device
echo $device
echo $user

ls -lh
-rwxr-xr-x  root  root    testexpect.exp

커뮤니티에 도움을 주셔서 감사합니다!!

PS 저는 Debian Wheezy를 실행하고 있습니다. apt-get install을 통해 설치하겠습니다. 감사합니다.

답변1

Expect는 Tcl 언어를 기반으로 하므로 bash 'echo'를 사용하면 안 됩니다. 화면에 무언가를 인쇄하려면 'puts'를 사용해야 합니다.

#!/usr/bin/expect -f
set device "1.1.1.1"
set user   "testuser"
spawn ssh $user@$device
puts $device
puts $user

그러면 다음과 같은 결과를 얻게 됩니다.

$ ./test.exp
spawn ssh [email protected]
1.1.1.1
testuser

답변2

오류 메시지는 명시적인 해석기를 사용하여 명령을 실행하고 있음을 나타냅니다. 예:

bash ./testexpect.exp

그러면 "#!"이 무시됩니다. 선. 스크립트를 실행하는 것은 무엇이든 파일 이름만 지정하면 됩니다(또는 명시적으로 expect ./testexpect.exp). 당신의 #! 라인이 나빴어./usr/bin/expect: bad interpreter: ...

관련 정보