OSX在Expect脚本中使用一个变量



使用OSX,我想访问Expect中的$(pbpaste)。

例如,这个别名连接到一个复制的ip地址(假设我在执行它之前复制了它),让我输入密码:

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

这个脚本将我连接到脚本中列出的特定主机,为我输入密码:

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

我想将$(pbpaste)合并到期望的脚本中,以便访问复制的主机并为我输入密码。怎样

顺便说一句,我知道ssh密钥,把密码放在纯文本中通常是不好的形式。在我的情况下,这并不重要,也对我没有帮助——让上面的EXPECT脚本使用$(pbpaste)变量作为主机名对我来说更重要。

此外,我希望能够将主机作为参数而不是$(pbpaste)传递。不过,这是最初问题的次要问题——每个问题一个脚本?或者,如果没有提供主机的参数,则默认为$(pbpaste)?哪个更容易写/理解。

我不能测试它,但这应该可以工作:

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

最新更新