带有 expect in 1 命令行且没有密码的 ssh-keygen
ssh-keygen with expect in 1 command line and no passphrase
我正在尝试使用一个命令行来执行 ssh-keygen 并生成密钥,而无需进一步的用户输入(无密码)
我希望这已经足够了
expect -d -c "spawn ssh-keygen; expect -re {.*: } { send '\n' }; expect -re {.*: } { send '\n' }; expect -re {.*: } { send '\n' }"
但是在最后一步之后,它就直接退出了。
再尝试一层
expect -d -c "spawn ssh-keygen; expect -re {.*: } { send '\n' }; expect -re {.*: } { send '\n' }; expect -re {.*: } { send '\n' }; expect -re {.*: } { send '\n' }"
抱怨Saving key "'" failed: passphrase is too short (minimum five characters)
为什么 expect ssh-keygen 命令在第一次尝试时退出而没有完成?
为什么 ssh-keygen 在应该收到 \n 时却抱怨收到了“'”?
如果你想要单线试试
expect -c 'spawn ssh-keygen; expect : { send \n; exp_continue} eof'
expect 中的字符串不使用 '
进行引用。您可以根据您的字符串使用 ""
或 {}
。在此示例中,模式中 .*
的使用没有实际用途,因此您也可以只匹配 :
。 exp_continue
的使用将循环遍历相同的 expect 语句。 eof
匹配文件结尾。
您不需要 expect
。只需使用 -N
选项指定一个空密码。
ssh-keygen -f foo -N ''
我正在尝试使用一个命令行来执行 ssh-keygen 并生成密钥,而无需进一步的用户输入(无密码)
我希望这已经足够了
expect -d -c "spawn ssh-keygen; expect -re {.*: } { send '\n' }; expect -re {.*: } { send '\n' }; expect -re {.*: } { send '\n' }"
但是在最后一步之后,它就直接退出了。
再尝试一层
expect -d -c "spawn ssh-keygen; expect -re {.*: } { send '\n' }; expect -re {.*: } { send '\n' }; expect -re {.*: } { send '\n' }; expect -re {.*: } { send '\n' }"
抱怨Saving key "'" failed: passphrase is too short (minimum five characters)
为什么 expect ssh-keygen 命令在第一次尝试时退出而没有完成?
为什么 ssh-keygen 在应该收到 \n 时却抱怨收到了“'”?
如果你想要单线试试
expect -c 'spawn ssh-keygen; expect : { send \n; exp_continue} eof'
expect 中的字符串不使用 '
进行引用。您可以根据您的字符串使用 ""
或 {}
。在此示例中,模式中 .*
的使用没有实际用途,因此您也可以只匹配 :
。 exp_continue
的使用将循环遍历相同的 expect 语句。 eof
匹配文件结尾。
您不需要 expect
。只需使用 -N
选项指定一个空密码。
ssh-keygen -f foo -N ''