펄, 텔넷->waitfor() 의 타임아웃 문제.

sharefeel의 이미지

네떡 장비를 제어하기 위해서 펄로 텔넷 접속을 하고 있습니다.

$t = new Net::Telnet;

$t->open($ip);
$t->waitfor("/login:/");

$t->print($login);
$t->waitfor("/assword:/");

$t->print($password);
$t->waitfor("/\>/")

이런 식이지요.
한눈에 뭐하는 코드인지 아시겠지요?^^
텔넷 접속해서 로그인하고 프롬프트를 기다리는 코드입니다.

그런데 문제는 waitfor() 함수중에 하나가 timeout이 발생했고,
그에 따라서 스크립트가 종료되버렸습니다.

그래서 질문 드리고 싶은 것은,
저 타임아웃 자체를 길게 만드는 것이 가능한지 여부입니다.

불가능하다면 펄 스크립트를 실행하는 C코드에서 에러처리가 더 들어가야 하는데,,
펄 스크립트가 비정상종료 됐음을 C코드에서 알아차릴 수 있는지 여부도 추가로 여쭙고 싶습니다.
아마도 wait(&status)이나 그 사촌들, 그리고 WIFXXX(status) 매크로들이 도구가 될 거라고 추측은 해봅니다만,
'이게 정답이다' 라고 제시해주는 곳이 없어서 고수분들께 질문 드립니다.

cjh의 이미지

Net::Telnet 매뉴얼 페이지에 원하는 내용은 다 설명되어 있네요.
한번 읽어보세요. (perldoc Net::Telnet)
물론 대체품으로 perl Expect 모듈도 사용할 수 있겠지요.

그리고 스크립트의 비정상 종료 여부는 결국 스크립트에서 종료할 때 어떤 상태 코드를 넘겨주는가에 따라 다릅니다. 일반적으로는 정상이 0, 오류가 0이 아닌 값이니까 스크립트에서 종료할 때 die() 나 exit(-1) 같은걸로 종료하고 그 값을 C에서 체크하면 됩니다.

--
익스펙토 페트로눔

sharefeel의 이미지

perldoc <== 이런놈이 있었군요.
해골님 감사합니다^^
지금 보고 있는데 바로 두번째 페이지에 답이 나오네요.
역시 구루는 먼가 다르군요..ㅋ
제가 사실 펄을 한지 일주일도 안되서요...
지금 거의 패닉상태입니다..ㅜㅜ

그나저나.. 종료값은 생각보다 힘들게 생겼습니다.
왜냐면 같은 상황이 좀처럼 발생하질 않아서요
일주일동안 딱 한번 발생했거든요. 그래도 무시할수는 없고.. 쩝.

===============
Vas Rel Por

cjh의 이미지

sharefeel wrote:
해골님 감사합니다^^

헬프미~ :cry:

--
익스펙토 페트로눔

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.