发信人: dfbb (赵无忌), 信区: Linux
标  题: 自动发文的expect程序
发信站: BBS 水木清华站 (Fri May  1 20:31:01 1998)
 
 这篇文章是用expect 自动发 的
 expect需要tcl/tk
 REDHAT中有这个软件
 是一个用来做交互式程序的脚本语言
 用它来打mud也很酷的
 下面是我的bbs post 程序
 不太完善,用法:首先输好自己的USERNAME& PASSWD
 then chmod a+x bbs
 bbs 文件 版名 标题
 用expect可以去bbs自动取文章
 在聊天室里录音
 象人一样聊天 use send_human
 
 ------------------Cut from here -------------------
 
 #!/usr/bin/expect --
  set CTRLA \001
  set CTRLC \037
  set CTRLZ \032
  set CTRLK \013
  set CTRLO \017
  set CTRLP \020
  set CTRLX \028
  set postbuffer ""
  set POSTFILE "./postfile"
  set TITLE "POST BY EXPECT"
  set BOARD "test"
  set USERNAME "guest"
  set PASSWORD "password"
  set debug_flag 1
 
 if $argc==0 {
              send_user "Too few argument\nUSAGE:\n\tbbs POST_FILE_NAME BOARD TITLE\n\n"
               exit
             }
 
 if $argc==1 {
              send_user "Too few argument\nUSAGE:\n\tbbs POST_FILE_NAME BOARD TITLE\n\n"
               exit
             }
 
 if $argc==2 {
              send_user "Too few argument\nUSAGE:\n\tbbs POST_FILE_NAME BOARD TITLE\n\n"
               exit
             }
 
 if $argc>3 {
             send_user "Too many argument\nUSAGE:\n\tbbs POST_FILE_N BOARD TITLE\n\n"
              exit
            }
 
 set POSTFILE [lindex $argv 0]
 set BOARD [lindex $argv 1]
 set TITLE [lindex $argv 2]
 
 if [file exists $POSTFILE] {
                             send_user "Start autoposting file..."
                            } else {
                                    send_user "Not find file $POSTFILE !!!\n"
                                     exit
                                   }
 
 proc readfile {} {
                   global POSTFILE postbuffer
 
                   if [catch {open $POSTFILE} fp] return
                    say "reading post file"
                    set line 0
                    while {[gets $fp postbuffer]!=-1} {
                                                       send " $postbuffer\r"
                                                       incr line
                                                      }
                   close $fp
                    say "I have success posted $line line "
                  }
 
 proc say {msg} {
                 global debug_flag
 
                 if !$debug_flag return
 
                 if [catch {puts "parent: $msg"}] {
                                                   send_log "child: $msg\n"
                                                  }
                }
 
 spawn /usr/bin/telnet 202.112.58.200
  expect "login"
  send "bbs\r"
  sleep 1
  expect "new'):"
  send "$USERNAME\r"
  sleep 1
  expect "请输入密码:"
  send "$PASSWORD\rq\r\reqqb\r\/$BOARD\r\r"
  sleep 1
  expect "刊 登 者"
  send "$CTRLP"
  expect "标题:"
  send "$TITLE\r"
  expect "设定:"
  send "\r"
  expect "时间"
  readfile
  sleep 24
  expect "Ctrl-Z"
  send "$CTRLX"
  sleep 1
  expect "编辑"
  send "\r"
  sleep 1
  expect "转信"
  sleep 1
  send "\r\r"
  sleep 1
  send "eeg\r\r\r"
  sleep 1
  send "exit\r"
  sleep 1
  close
  send_user "\r\r\r\rPosting file completed.\r\r\r"
 
 
 
--
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 159.226.41.99]

本文转自中文Linux论坛