我想使用可选文件和可选密码自动化ssh-keygen,如果找到文件则覆盖。如果我在终端写出脚本,它会问我三个问题。我基本上不希望它提示我,只是运行并返回响应或返回错误。
到目前为止,这是我的代码:
#!/usr/bin/osascript
on run
set email to "myemail@email.com"
set result to do shell script "ssh-keygen -t rsa -C \"" & email & "\""
return result
end run
注意:This问题非常相似,但海报没有提及传入可选文件,也没有提及他如何处理已存在的文件。
答案 0 :(得分:1)
使用-N
指定密码短语(或不使用密码短语),使用-f
指定文件位置,如果密钥存在,请先删除密钥。例如:
set keyPath to "~/.ssh/my_rsa_key"
do shell script ("rm " & keyPath & " " & keyPath & ".pub &> /dev/null;:")
set email to "myemail@email.com"
set myPassPhrase to "abcdefgh"
do shell script ¬
"ssh-keygen -t rsa -C \"" & email & "\" -N \"" & myPassPhrase & "\" -f " & keyPath
(result
是一个自动变量,分配给最后一条指令的结果,所以你不需要明确指定它,但如果你想要一个变量,你可以用其他一些变量名替换它。)
另外,考虑到大多数这些操作都发生在do shell script
内,你可能最好只做一个Bash脚本,例如:
#!/bin/bash
keyPath="~/.ssh/my_rsa_key"
email="myemail@email.com"
myPassPhrase="abcdefgh"
rm $keyPath $keyPath.pub &> /dev/null
ssh-keygen -t rsa -C "$email" -N "$myPassPhrase" -f "$keyPath"