2014-10-07 2 views
0

ssh에서 일부 명령 (예 : pwd)을 실행하고 싶습니다.일부 파이프 후에 linux expect + ssh 명령 출력이 누락됩니다.

나는 이것을 사용하여 포장하기를 기대하며, "e"명령이되므로 잘 작동합니다.

./e jump 

그러나 출력은 파이프 후 실종됐다가, **

여기
cat list.txt | xargs -I xx ./e xx 

는 전자 스크립트

[[email protected] tmp]# cat ./e 
expect -d -c ' 
     spawn ssh [email protected]'$1' pwd 
     expect "*assword:" { 
      send "r41\r" 
      sleep 1 
     } 

     sleep 3 
' 

이다 "PWD"명령의 결과를 표시 할 수는 없지만 파이프 후 SSH 괜찮습니다, 더 많은 파이프를 추가하기 위해 에코 xx ** **

echo xx | ssh [email protected] pwd 
+0

'echo xx' 값이'expect' 프로그램의 입력으로 주어지기를 기대합니까? 미안, 나는 그것을 이해할 수 없었다. ssh를 통해 원격지에 로그인하고 있습니다. 'echo xx'의 필요성은 무엇입니까? – Dinesh

+0

배관을위한 에코 xx. 목적을 표시하기 위해 다시 편집하십시오. – user3073309

+0

user3073309, 내 답변의 작동 여부 – Dinesh

답변

0

사용 ; 내가 여기 echo xx 리디렉션에 대한 확실하지 않다 복합 명령문

echo xx | ssh [email protected]; pwd 
+0

아니, 나는 점프 기계에 pwd의 결과를 원한다. – user3073309

0

에서 명령을 분리해서합니다. 단, 기대 코드에서 바로 pwd

expect -c ' 
     spawn ssh [email protected] pwd 
     expect "*word:" { 
       send "root\r" 

       #The reason for adding '/' here is to wait for the 
       #directory to get printed and since the directory 
       #will have the char '/' such as 

       #/users/dinesh/pgms/expect 

       expect "/" 

       sleep 1 
     } 
     sleep 3 
     puts "leaving" 
' 

을 실행 얻을 수 있도록 내 원격 시스템이 테스트 한 기다려야 하나 expect 문을 추가하고 당신은 당신의 예상 문자를 기반으로 기대 문자를 사용자 정의 할 수 있습니다. 이것도 도움이되지 않으면 오류 출력을 제공하십시오.

관련 문제