VAR1=$(expect -c '
spawn ssh-keygen -t rsa -f '"$SSH_KEY_PATH_ID"' -N '' -q
expect -exact "Generating public/private rsa key pair.\r
Enter file in which to save the key (/root/.ssh/id_rsa):"
sleep 5
send "\r";
expect "Enter passphrase (empty for no passphrase): "
sleep 5
send "\r";
expect "Enter same passphrase again: "
sleep 5
send "\r";
')
这是我在bash中的命令响应ssh-keygen问题。即使我删除了“sleep”行,这个代码也可以在我的机器上运行。但是在另一台机器上它不起作用。它给出了错误
send: spawn id exp6 not open
while executing
"send "\r""
问题是什么
更新:我在ubuntu上运行良好但在Centos上运行不佳。期望版本相同
更新:我修复了它。问题是,使用_N选项它提供了密码短语传递,并且使用此代码我将其命名为“”。然后它会错误地预期。最后一个有效的代码是;
VAR1=$(expect -c '
spawn ssh-keygen -t rsa -f '"$SSH_KEY_PATH_ID"' -q
expect -exact "Generating public/private rsa key pair.\r
Enter file in which to save the key (/root/.ssh/id_rsa):"
send "\r";
expect "Enter passphrase (empty for no passphrase): "
send "\r";
expect "Enter same passphrase again: "
send "\r";
')
答案 0 :(得分:0)
确保您的文件具有POSIX行结尾(\ r)而不是DOS行结尾(\ r \ n)