自动登录脚本的问题

sh/bash/dash/ksh/zsh等Shell脚本
回复
gjw_apparitor
帖子: 5
注册时间: 2008-09-18 10:57

自动登录脚本的问题

#1

帖子 gjw_apparitor » 2008-11-20 10:32

#!/usr/bin/expect -f


if {$argc<2} {
puts stderr “Usage: $argv0 host user passwaord [timeout]”
exit 1
}
set HOST [lindex $argv 0]
set USER [lindex $argv 1]
set PASSWD [lindex $argv 2]
set TIMEOUT [lindex $argv 3]

set timeout $TIMEOUT

spawn ssh -l $USER $HOST

# 判断是否是第一次登录
expect_before “no)?” {
send “yes\r” }
sleep 1

# 输入密码
expect “password:”
send “$PASSWD\r”
#如果想直接进入交互模式,可以直接用下面这句
interact

#自动在远端服务器执行命令

#判断提示符
sleep 2
expect “*#”
send “mkdir /blog.zhangjianfeng.com/tmp/abcd -p\r”
send “ls -l\r”
expect “*#”
exit

## END ##
===============================================


我用这个脚本不行 到输入passwd的时候就没有反应 大家有什么好的脚本吗 还是这个有问题
MaskRay
帖子: 61
注册时间: 2010-04-29 22:00
系统: Gentoo Linux ~amd64
联系:

Re: 自动登录脚本的问题

#2

帖子 MaskRay » 2011-01-02 22:11

可能密码提示是“Password:”
chengmoYS
帖子: 125
注册时间: 2007-10-22 22:40

Re: 自动登录脚本的问题

#3

帖子 chengmoYS » 2011-01-04 17:14

gjw_apparitor 写了:#!/usr/bin/expect -f


if {$argc<2} {
puts stderr “Usage: $argv0 host user passwaord [timeout]”
exit 1
}
set HOST [lindex $argv 0]
set USER [lindex $argv 1]
set PASSWD [lindex $argv 2]
set TIMEOUT [lindex $argv 3]

set timeout $TIMEOUT

spawn ssh -l $USER $HOST

# 判断是否是第一次登录
expect_before “no)?” {
send “yes\r” }
sleep 1

# 输入密码
expect “password:”
send “$PASSWD\r”
#如果想直接进入交互模式,可以直接用下面这句
interact

#自动在远端服务器执行命令

#判断提示符
sleep 2
expect “*#”
send “mkdir /blog.zhangjianfeng.com/tmp/abcd -p\r”
send “ls -l\r”
expect “*#”
exit

## END ##
===============================================


我用这个脚本不行 到输入passwd的时候就没有反应 大家有什么好的脚本吗 还是这个有问题
我学tcl和expect有段时间了,但是很多命令不清楚用法,
这个建议注意下编写代码时保持风格一致,
我的意思时,很多能用expect命令的就不要用tcl的命令来写吧


我在机器上测试你这个代码 有问题 如下
[root@localhost 下载]# expect test1.exp 10.1.12.222 root qwe123 5
spawn ssh -l root 10.1.12.222
The authenticity of host '10.1.12.222 (10.1.12.222)' can't be established.
RSA key fingerprint is 01:ff:83:10:5c:46:3c:14:6c:aa:af:0e:cf:c6:cb:c2.
Are you sure you want to continue connecting (yes/no)? “qwe123
”Please type 'yes' or 'no':
感觉是逻辑有问题
MaskRay
帖子: 61
注册时间: 2010-04-29 22:00
系统: Gentoo Linux ~amd64
联系:

Re: 自动登录脚本的问题

#4

帖子 MaskRay » 2011-05-13 12:08

是指 send_user 和 puts 吧,在当前 spawn_id 是 user_spawn_id 的情况
send_user 确实像 puts,有些区别,比如 send_user 不追加 \n,send_user 会记录日志(如果 log_file 了)
回复