3

次を使用して、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することです。

4

1 に答える 1

0

Bash と ksh はプロセス置換をサポートしているため、次のように試すことができます。

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

私が考えることができる唯一の問題は、 の値が$argv0私たちが通常期待するものではないということです。スクリプトにハードコーディングすることを検討してください。

于 2013-03-14T14:11:38.723 に答える