2016-11-22 1 views
1

라우터의 서브 모듈에 연결하고 그것에 대한 명령을 실행하고 출력을 파일에 저장하려고합니다. 내가 가진 문제는 하위 모듈에 사용자 이름과 암호가 필요하다는 것입니다. 모든 명령을 단일 스크립트에 넣으면 입력하라는 메시지가 나타나기 전에 사용자 이름/암호 세부 정보가 전송됩니다. 명령 사이에 지연을 설정하거나 동일한 SSH 세션에서 일괄 적으로 실행하는 방법이 있습니까? Bash - SSH 그들 사이에 지연이있는 다중 명령

은 내가 EOF 접근 방식을 사용하고 있습니다 (권장) 별도의 파일의 명령을 갖는
ssh [email protected] > file.log << EOF 
session slot 1 # command to connect to the subslot. 
        # a delay of about 3 sec would be required before the credentials are sent 
slot_username 
slot_password 
command1 
command2 
command3 
exit 
exit 
EOF 

은 또한, 두 번째 출구 라우터에서 저를해야하지만, 그냥 무시됩니다.

+0

에서 'expect'를 사용하는 것이 좋습니다. – Cyrus

+0

감사합니다. 결국 나는 기대를 사용하여 스크립트를 만들었습니다. 나는 bash 스크립트와 결합하여 메뉴를 요구하고 사용자 입력을 얻는다. 나는 이것을 할 수있는 "더 똑똑한"방법이있을 것이라고 확신하지만 기대를 통해 사용자 입력을 얻고 데이터를 변수로 사용하는 방법을 찾지 못했습니다 .. –

답변

1

이전에 명명 된 파이프를 사용했습니다. 명명 된 파이프를 만들고 그 입력을 ssh 명령으로 보냅니다. 그런 다음 다른 스크립트에서 FOO에 명령을 쓸 수

mkfifo a=rw FOO 
cat FOO | ssh [email protected] > file.log 

:

echo username >> FOO 
sleep 3 
echo password >> FOO 

그러나 ... 도구는 당신이하고 정확하게 일을하기 위해 존재한다. clogin이라고합니다. https://linux.die.net/man/1/clogin

+0

OP도 로컬 시스템에 있는지 확인하도록 선택할 수 있습니다 'expect' 패키지/프로그램이 설치되었습니다 (Q가 정확히 이해되면). 모두에게 행운을 빕니다. – shellter

관련 문제