使用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)?这更容易写/理解。
答案 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