sh/bash/dash/ksh/zsh等Shell脚本
-
piaocn
- 帖子: 31
- 注册时间: 2009-05-22 20:31
#1
帖子
由 piaocn » 2011-02-23 21:00
写了个脚本:
代码: 全选
#!/usr/bin/expect
spawn sudo nautilus
expect "[sudo] password for patrick:"
send "123"
老是提示 :
代码: 全选
patrick@patrick-System-Product-Name:~$ ./login.sh
spawn sudo nautilus
invalid command name "sudo"
while executing
"sudo"
invoked from within
"expect "[sudo] password for patrick:""
(file "./login.sh" line 3)
我确认我sudo没拼错啊。。。。。。。。。。。
-
tycable
- 帖子: 66
- 注册时间: 2011-01-01 8:14
#2
帖子
由 tycable » 2011-02-24 18:39
expect { ... }
花括号
看看 Manual 吧。
-
chengmoYS
- 帖子: 125
- 注册时间: 2007-10-22 22:40
#3
帖子
由 chengmoYS » 2011-02-25 11:03
#!/usr/bin/expect
spawn sudo nautilus
expect "[sudo] password for patrick:"
send "123"
你这个脚本没有写完吧。
spawn开启一个sudo进程执行nautilus,expect等待该进程的返回,也就是要求你输入root密码,然后你的123是root密码吗,另外使用send传递参数给进程时,最好加上\r。
我用的不是ubuntu,无法帮你测试下。不过你可以试试看
#! /usr/bin/expect -f
spawn sudo nautilus
expect "[sudo] password for patrick:" ;# 这里应该是提示你输入root的密码吧
send "123\r" ;# 这里就是root的密码,另外加上[Enter]
interact ;# 这里是将脚本流程切换到用户
# epect eof 或者使用这个,来期待本次脚本执行完成,没有其他的操作了
-
aerofox
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
#4
帖子
由 aerofox » 2011-02-27 11:02
用 expect 来给 sudo 输密码,那是给自己找麻烦,直接在 /etc/sudoers 里配置不用密码就是了。
-
MaskRay
- 帖子: 61
- 注册时间: 2010-04-29 22:00
- 系统: Gentoo Linux ~amd64
-
联系:
#5
帖子
由 MaskRay » 2011-05-13 12:02
expect "[sudo] password for patrick:"
这行的问题,tcl 会尝试执行 sudo 这个命令的。前面加个 \ 转义
expect "\[sudo] password for patrick:"