📄 program-expect.html
字号:
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="Author" content="Edward Fu">
<meta name="GENERATOR" content="Mozilla/4.05 [zh-CN] (X11; I; Linux 2.1.127 i686) [Netscape]">
<title>Freesoft Linux FAQ -- 自动发文的expect程序</title>
</head>
<body>
发信人: dfbb (赵无忌), 信区:
Linux
<br>标 题: 自动发文的expect程序
<br>发信站: BBS 水木清华站 (Fri May 1 20:31:01 1998)
<br>
<br> 这篇文章是用expect 自动发 的
<br> expect需要tcl/tk
<br> REDHAT中有这个软件
<br> 是一个用来做交互式程序的脚本语言
<br> 用它来打mud也很酷的
<br> 下面是我的bbs post 程序
<br> 不太完善,用法:首先输好自己的USERNAME& PASSWD
<br> then chmod a+x bbs
<br> bbs 文件 版名 标题
<br> 用expect可以去bbs自动取文章
<br> 在聊天室里录音
<br> 象人一样聊天 use send_human
<br>
<br> ------------------Cut from here -------------------
<br>
<br> #!/usr/bin/expect --
<br> set CTRLA \001
<br> set CTRLC \037
<br> set CTRLZ \032
<br> set CTRLK \013
<br> set CTRLO \017
<br> set CTRLP \020
<br> set CTRLX \028
<br> set postbuffer ""
<br> set POSTFILE "./postfile"
<br> set TITLE "POST BY EXPECT"
<br> set BOARD "test"
<br> set USERNAME "guest"
<br> set PASSWORD "password"
<br> set debug_flag 1
<br>
<br> if $argc==0 {
<br>
send_user "Too few argument\nUSAGE:\n\tbbs POST_FILE_NAME BOARD TITLE\n\n"
<br>
exit
<br>
}
<br>
<br> if $argc==1 {
<br>
send_user "Too few argument\nUSAGE:\n\tbbs POST_FILE_NAME BOARD TITLE\n\n"
<br>
exit
<br>
}
<br>
<br> if $argc==2 {
<br>
send_user "Too few argument\nUSAGE:\n\tbbs POST_FILE_NAME BOARD TITLE\n\n"
<br>
exit
<br>
}
<br>
<br> if $argc>3 {
<br>
send_user "Too many argument\nUSAGE:\n\tbbs POST_FILE_N BOARD TITLE\n\n"
<br>
exit
<br>
}
<br>
<br> set POSTFILE [lindex $argv 0]
<br> set BOARD [lindex $argv 1]
<br> set TITLE [lindex $argv 2]
<br>
<br> if [file exists $POSTFILE] {
<br>
send_user "Start autoposting file..."
<br>
} else {
<br>
send_user "Not find file $POSTFILE !!!\n"
<br>
exit
<br>
}
<br>
<br> proc readfile {} {
<br>
global POSTFILE postbuffer
<br>
<br>
if [catch {open $POSTFILE} fp] return
<br>
say "reading post file"
<br>
set line 0
<br>
while {[gets $fp postbuffer]!=-1} {
<br>
send " $postbuffer\r"
<br>
incr line
<br>
}
<br>
close $fp
<br>
say "I have success posted $line line "
<br>
}
<br>
<br> proc say {msg} {
<br>
global debug_flag
<br>
<br>
if !$debug_flag return
<br>
<br>
if [catch {puts "parent: $msg"}] {
<br>
send_log "child: $msg\n"
<br>
}
<br>
}
<br>
<br> spawn /usr/bin/telnet 202.112.58.200
<br> expect "login"
<br> send "bbs\r"
<br> sleep 1
<br> expect "new'):"
<br> send "$USERNAME\r"
<br> sleep 1
<br> expect "请输入密码:"
<br> send "$PASSWORD\rq\r\reqqb\r\/$BOARD\r\r"
<br> sleep 1
<br> expect "刊 登 者"
<br> send "$CTRLP"
<br> expect "标题:"
<br> send "$TITLE\r"
<br> expect "设定:"
<br> send "\r"
<br> expect "时间"
<br> readfile
<br> sleep 24
<br> expect "Ctrl-Z"
<br> send "$CTRLX"
<br> sleep 1
<br> expect "编辑"
<br> send "\r"
<br> sleep 1
<br> expect "转信"
<br> sleep 1
<br> send "\r\r"
<br> sleep 1
<br> send "eeg\r\r\r"
<br> sleep 1
<br> send "exit\r"
<br> sleep 1
<br> close
<br> send_user "\r\r\r\rPosting file completed.\r\r\r"
<br>
<br>
<br>
<br>--
<br>※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 159.226.41.99]
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -