OSX在Expect脚本中使用变量

时间:2012-08-21 05:23:37

标签: macos bash ssh alias expect

使用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密钥,这就是将密码以纯文本形式存放的普遍形式。在我的情况下,这是不重要的,不会帮助我 - 使用$(pbpaste)变量使用上述EXPECT脚本作为主机名对我来说更重要的实用程序。

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

1 个答案:

答案 0 :(得分: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