[완료]perl 스크립트중 expect 질문 입니다.
인터넷 돌아다니다가 ssh 자동 로그인 perl 스크립트가 있길레
그거 수정해서 패스워드 변경 스크립트 작성할려고 하는데 막히네요.ㅠㅠ
============================================================================
#1 $exp->expect($timeout,
#2 [qr '[?] $' => \&inputyes],
#3 [qr 'password: $' => \&inputpw],
#4 [qr '[#>\$] $' => \&inputpasswd],
#5 [qr 'New UNIX password: $' => \&inputpasswd2],
#6 [qr 'Retype new UNIX password: $' => \&inputpasswd3],
#7 [timeout => \&timeouterr],);
============================================================================
다른 부분은 생략하고
#3 이 ssh 로그인 패스워드 넣는 부분이구요
#4 까지 진행되면 passwd test 실행되서
#5, #6 이렇게 넘어갈줄 알았는데
#5 의 문장끝 password; 부분이랑 #3 의 password; 부분이 중복되면서
#5,6 으로 넘어가지 않고 계속 #3 부분에서 루프가 돕니다.
이부분 제 프로그래밍 지식으로 처리를 못해서 KLDP 지식인님들의 도움을 받고자 합니다.^^
match pattern을 활용해 보시죠.
함수의 프로토 타입이 다음과 같더군요.
$object->expect($timeout, @match_patterns)
#3의 qr'password'가 아래 #5, #6의 문장도 만족 시키니까 반복 되는 것 같습니다.
그러므로 맨 앞에 ^를 붙이거나 \n등을 넣어서 문제를 해결 할 수 있지 않을까요?
"^" 와 "/" 의 뜻이 궁금합니다.
"^" 의 의미가 그 줄 첫 문자열을 뜻하는게 맞나요?
ssh 로그인 할때
root@10.10.10.10's password: (or root@test's password: )
이런 식이기 때문에 password: 는 맨 마지막 문자열 이라서요.
그리고 ^ 부분을 사용한곳에서는 ' 대신에 / 로 묶어주었는데 두개의 차이가 무엇인가요?
아 그리고 하나더요..;;
password: $ => 이 부분에서 $의 의미도 궁금하네요..ㅜㅜ
''나 ??나 //에 대한
''나 ??나 //에 대한 내용은 http://perldoc.perl.org/perlop.html#Regexp-Quote-Like-Operators를 참조하세요.
$는 ^와 비교 될 수 있는데 줄의 마지막과 매치를 의미 합니다.
#3이 앞에 UNIX가 붙지 않은 경우를 매치로 하던지
아니면
하시면 되지 싶네요.
감사합니다~^^
좋은 사이트 알려줘서 감사하구요.
이제 나머지는 이해는 확실히 안가지면 연구해 봐야겠네요.ㅎㅎ
즐거운 하루 되세요!
댓글 달기