期待bash的错误

时间:2012-08-22 11:55:14

标签: linux bash shell expect

 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";
     ')

1 个答案:

答案 0 :(得分:0)

确保您的文件具有POSIX行结尾(\ r)而不是DOS行结尾(\ r \ n)