运行期望gist.github.com中的脚本

时间:2013-03-10 04:04:45

标签: bash expect gist

我知道我可以使用以下命令运行放在gist.github.com内的bash脚本:

bash -c "$(curl -fsSL https://raw.github.com/gist/5126919)" <arg0> <arg1>

我如何为期望的脚本做同样的事情?

我在这里有一个示例:

https://gist.github.com/simkimsia/5126919

#!/usr/bin/expect -f

set CHANGESHELL_FOR_USER [lindex $argv 0];
set PASSWORD_OF_USER [lindex $argv 1];

########################################
## switch to another user
## read this http://stackoverflow.com/a/1988255/80353
########################################
sudo -u $CHANGESHELL_FOR_USER -H sh -c "chsh -s /bin/bash" 

expect "*?assword:*" {send -- "$PASSWORD_OF_USER\r";}
expect eof

我的目的是为特定用户chsh。

1 个答案:

答案 0 :(得分:0)

Bash和ksh支持进程替换,所以你可以尝试这样:

expect <(curl ...) arg1 arg2 ...

我能想到的唯一问题是$argv0的价值不是我们通常所期望的。您可以考虑在脚本中对其进行硬编码。