您好,我正在寻找援助search/root/.ssh/authorized_keys给定的公钥(称为$ pub_key),并删除它。 想在bash脚本中做到这一点。
什么是完成这个最好的方法?
grep -v $pub_key /root/.ssh/authorized_keys > /tmp/authorized_keys.new工作吗? 你可以比较两个文件来validation工作。 给定由组成键的随机字符组成的长string,使用$ pub_key的子string来完成此操作可能就足够了。
我想我需要使用sed,但不能弄清楚语法,这是我到目前为止:
sed -i '/$pub_key/ d' /root/.ssh/authorized_keys
在d之前删除空格,它将按照您的预期工作:
sed -i '/$pub_key/d' /root/.ssh/authorized_keys
永远不要忘记perliner的力量!
$pub_key="AAAABCD"; perl -i "/$pub_key/ or print" /root/.ssh/authorized_keys
这将执行就地编辑并删除违规密钥。
或者,也许你有一个非常长的authorized_keys文件,你想与gnu并行处理它?
pub_key="AAAABCD"; parallel -k "echo {} | grep -v $pub_key" </root/.ssh/authorized_keys
可能性是无止境。
更新:Ole指出的固定错字。 谢谢Ole!