分页: 1 / 1

我这哪里错了?没错啊就是不过啊

发表于 : 2011-02-23 21:00
piaocn
写了个脚本:

代码: 全选

#!/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没拼错啊。。。。。。。。。。。

Re: 我这哪里错了?没错啊就是不过啊

发表于 : 2011-02-24 18:39
tycable
expect { ... }
花括号

看看 Manual 吧。

Re: 我这哪里错了?没错啊就是不过啊

发表于 : 2011-02-25 11:03
chengmoYS
#!/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 或者使用这个,来期待本次脚本执行完成,没有其他的操作了

Re: 我这哪里错了?没错啊就是不过啊

发表于 : 2011-02-27 11:02
aerofox
用 expect 来给 sudo 输密码,那是给自己找麻烦,直接在 /etc/sudoers 里配置不用密码就是了。

Re: 我这哪里错了?没错啊就是不过啊

发表于 : 2011-05-13 12:02
MaskRay
expect "[sudo] password for patrick:"

这行的问题,tcl 会尝试执行 sudo 这个命令的。前面加个 \ 转义

expect "\[sudo] password for patrick:"