2011-02-10 155 views
1

我正在使用linux'expect'来自动化密码。linux expect命令

#!/usr/bin/expect 
set password passwd 
spawn scp * [email protected]_address:. 
expect "password:" 
send "$password\r" 
expect eof 
output : 
spawn scp * [email protected]_address:. 
[email protected]_address's password: *: No such file or directory 

看起来正则表达式'*'不被识别。我知道设置密钥的ssh-key gen方法,但'expect'命令更适合我的具体情况。

回答

1

*不是一个有效的正则表达式,并且在上下文中使用它,它将是一个通配符。 spawn将从字面上解释它,并将其作为参数传递给您开始的程序。

如果你想在星号匹配替换的,你必须得到一个shell来为你做它:

spawn sh -c "scp * [email protected]" 
+1

的另一种选择是让期待做水珠扩张与`glob`命令 – 2011-02-10 16:52:26