试图理解bash脚本
该脚本应该将密钥从ossec服务器分发到其客户端试图理解bash脚本,bash,chef-infra,Bash,Chef Infra,该脚本应该将密钥从ossec服务器分发到其客户端 cat /usr/local/bin/dist-ossec-keys.sh #!/bin/sh # for host in chef-production2-doctor-simulator01 do echo "host is $host" key=`mktemp` grep $host /var/ossec/etc/client.keys > $key echo "key is $key" scp -i /var/
cat /usr/local/bin/dist-ossec-keys.sh
#!/bin/sh
#
for host in chef-production2-doctor-simulator01
do
echo "host is $host"
key=`mktemp`
grep $host /var/ossec/etc/client.keys > $key
echo "key is $key"
scp -i /var/ossec/.ssh/id_rsa -B -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $key ossecd@$host:/var/ossec/etc/client.keys >/dev/null 2>/dev/null
rm $key
ech "done"
done
我逐行运行脚本,它的输出是
host is chef-production2-doctor-simulator01
key is /tmp/tmp.fAZqvNkJ9f
bash脚本是从模板创建的
它应该做什么?
为什么它不工作?错误出现在
scp-i/var/ossec/…
行中
我糟糕的linux知识没有注意到
/dev/null 2>/dev/null
删除它会发现真正的错误(即
权限被拒绝(公钥)
)为什么不使用厨师烹饪书分发密钥?不确定,你和chef有多远,但我想这正是通过chef管理基础设施时生活更轻松的时候。@StephenKing这就是我试图做的,它不起作用,所以我正在尝试调试它。基本上,这个脚本是通过一个chef客户端运行的?如果这些其他节点也运行chef,它将非常简单和干净(使用运行在那里的烹饪书)。1.脚本应该由服务器而不是客户端运行。chef软件只是一个包装器,可以快速运行这个脚本。你为什么认为它不起作用?你没有提到任何错误。
cat /var/ossec/etc/client.keys
001 #*#*#*#*#*#*#*#*#*#*#197.221.226 7196c76c568258e2ad836f8e1aa37e0758dee969f560ceb59be76879c3f3412d
002 test-agent 10.128.0.9 e2c9b117f26a202598007dcb4ec64e01f18000f9d820f6b3508a95e5313e6537