1

OSXを使用して、Expect内の$(pbpaste)にアクセスしたいと思います。

したがって、たとえば、このエイリアスはコピーされたIPアドレスに接続します(実行する前にコピーしたと仮定します)-パスワードを入力する必要があります:

alias s='ssh $(pbpaste) -l root'

そして、このスクリプトは、私のためにパスワードを入力するスクリプトにリストされている特定のホストに私を接続します:

#!/usr/bin/expect
spawn  ssh hostname -l username
expect "password:"
send "secret\n"
interact

$(pbpaste)をexpectスクリプトに組み込んで、コピーしたホストにアクセスし、パスワードも入力できるようにしたいと思います。どのように?

ちなみに、私はsshキーを知っていますが、それはパスワードをプレーンテキストで入力するには一般的に貧弱な形式です。私の状況では、これは重要ではなく、役に立ちません。ホスト名が私にとってより重要であるため、上記のEXPECTスクリプトを$(pbpaste)変数で動作させるユーティリティです。

さらに、$(pbpaste)の代わりにホストを引数として渡せるようにしたいと思います。これは元の質問の二次的なものですが、それぞれに1つのスクリプトがありますか?または、ホストの引数が指定されていない場合、デフォルトの$(pbpaste)ですか?どちらが書きやすく、理解しやすいか。

4

1 に答える 1

0

私はそれをテストすることはできませんが、これはうまくいくはずです:

spawn ssh [exec pbpaste] -l username

またはコマンドライン引数を使用:

#!/usr/bin/expect
if {$argc == 0} {
  set hostname [exec pbpaste]
} else {
  set hostname [lindex $argv 0]
}
spawn ssh $hostname -l username
于 2012-08-21T17:36:35.497 に答える