存储在变量中时,SSH命令选项会导致错误

时间:2016-01-06 19:59:50

标签: bash ssh

我有一个存储SSH命令的变量,因为我的脚本经常使用它。

SSH_CMD="ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o BatchMode=yes"

但是,我遇到了一个问题,SSH命令本身可以正常工作,但是当我使用变量

时它不起作用
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o BatchMode=yes $host exit 0
${SSH_CMD} $host exit 0

第一行效果很好。第二行失败并显示No such file or directory消息。当我从-o UserKnownHostsFile=/dev/null中删除$SSH_CMD时,错误消息为command not found。如果我删除其他两个选项中的任何一个,则邮件不会更改,但当$SSH_CMD只是"ssh"时,它会有效。

是什么导致了这个问题?

1 个答案:

答案 0 :(得分:0)

  

那么为什么它在其他脚本中没有任何问题呢?

多次回答。尝试使用bash别名或bash函数:

alias my_ssh='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o BatchMode=yes'
my_ssh $host exit 0

或者在ssh_config中使用~/.ssh/config

StrictHostKeyChecking no
UserKnownHostsFile /dev/null
BatchMode yes

然后你不需要像这样的任何harakiri,只需使用

ssh $host exit 1