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) 合并到期望脚本中,以便访问复制的主机并为我输入密码。如何?

附带说明一下,我知道 ssh 密钥,而将密码以纯文本形式输入的形式通常很差。在我的情况下,这并不重要并且对我没有帮助 - 让上述 EXPECT 脚本使用 $(pbpaste) 变量作为主机名的实用程序对我来说更重要。

此外,我也希望能够将主机作为参数而不是 $(pbpaste) 传递。虽然这是原始问题的次要问题 - 每个脚本一个?或者如果没有提供主机参数,则默认为 $(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 回答