求教一个linux下对一个命令行程序输入字符的方法

caven 2011-02-10 03:15:50
有一个其他人开发的linux命令行程序 A。
我需要用另一个程序或者脚本B(与上一个程序在一台机上),对A输入几个字符串。
我尝试了 键盘模拟 与 shell 的expect方式都搞不定。
键盘模拟方式把字符都传到自己的程序B,传不到A上。
...全文
269 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
caven 2011-02-11
  • 打赏
  • 举报
回复
搞定了!多谢大家!
#bwcli.sh
cp ./bwcli.exp /export/home/bwadmin/
cd /export/home/bwadmin/
chown bwadmin:bwadmin bwcli.exp
chmod 777 bwcli.exp
su - bwadmin -c "./bwcli.exp>>log.txt password script.txt 60"

#bwcli.exp
#!/usr/bin/expect

if { $argc != 3 } {
exit 1
}

set pwd [lindex $argv 0]
set filename [lindex $argv 1]
set exectime [lindex $argv 2]

spawn bwcli
set timeout 8

expect {
"_CLI>" {send "lo\n"}
eof { exit 0 }
timeout { exit1 }
}


expect {
"*Password:*" {send "$pwd\n"}
eof { exit 0 }
timeout { exit1 }
}

expect {
"*admin logging in...*" {send "\n"}
eof { exit 0 }
timeout { exit1 }
}

expect {
"_CLI>" {send "r /opt/$filename pwprotoff\n"}
eof { exit 0 }
timeout { exit1 }
}

set timeout $exectime

expect {
"Please confirm (Yes, Y, No, N):" {send "Y\n"}
eof { exit 0 }
timeout { exit1 }
}
李亚超 2011-02-10
  • 打赏
  • 举报
回复
重定向
justkk 2011-02-10
  • 打赏
  • 举报
回复
仅供参考
#!/usr/bin/expect -f

spawn bwcli
expect "Password: "
send "password\r"
sys
Res
expect eof
weerweer 2011-02-10
  • 打赏
  • 举报
回复
sh的read?
kingstarer 2011-02-10
  • 打赏
  • 举报
回复
expect 是这样用的吗

建议你查查用法 我看你这样用好像不对 变成重定向输入的内容了
caven 2011-02-10
  • 打赏
  • 举报
回复
bwcli<<!
user
password
!

执行完user 程序提示输入密码:
AS_CLI> Password:
这个时候 password 无法输入.

这样也搞不定
bwcli<<!
lo
expect {"*Password:*" { send "password\n"}}
sys
Res
!




justkk 2011-02-10
  • 打赏
  • 举报
回复
echo "123"|A

或者
A<<!
123
456
!

可否?
caven 2011-02-10
  • 打赏
  • 举报
回复
A 可以由B 以shell的方式启动, A 是没有入参的,程序启动后可以通过命令行读取命令. 现在的问题是没有让A免的交互工作.A的命令行模式类似与交换机的配置模式.
justkk 2011-02-10
  • 打赏
  • 举报
回复
A不能重新运行?
A从哪儿读取输入?
caven 2011-02-10
  • 打赏
  • 举报
回复
A 是一个在运行的程序,B 只知道A的任务号。 无法把设备块中的数据重定向到A。
S_aladdin 2011-02-10
  • 打赏
  • 举报
回复
重定向啊,|

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧