ansible执行多条Linux命令

ansible执行多条Linux命令,第1张

ansible lv -a 'df -h &&free -h '

报错

10.255.177.180 | FAILED | rc=1 >>

df: ‘&&’: No such file or directory

df: ‘free’: No such file or directorynon-zero return code

10.255.177.183 | FAILED | rc=1 >>

需要修改为:

ansible lv -m shell -a 'df -h &&free -h '

连续不中断执行

用可以让多个命令连续知行,中间出现错误并不会中断后面命令,如

虽然第二条指令会报错,但是不会影响后面的指令,最后test目录不存在

出错停止后面指令

用&&分割的命令,如果没有错误会一直执行下去,出现错误立即中止,如

这回在第二个指令处就中止了

一次正确即停止

用||分割的命令,如果有错误就一直执行下去,直到一次正确立即中止,如

第一次执行第一条指令就正确,后面的不执行

第二次执行前两条都错误,直到最后一条才正确,最后一条不再执行

指定一台主机作为信任主机,这样从这台主机登录其他机器就不需要密码了。设置信任主机: 假设有四台机器:192.168.2.1~192.168.2.4,其中192.168.2.1为信任机,那么在192.168.2.1上运行如下命令: $.sh-keygen -t rsa //此处一路回车,生成秘钥 $scp .ssh/id_rsa.pub 192.168.2.2:~/ //把秘钥拷贝到其他远程机器 $ssh 192.168.2.2 ‘cat id_rsa.pub >>.ssh/authorized_keys’ //(远程执行命令)在远程机器上生成认证文件 经过这几步,从192.168.2.1 ssh登陆192.168.2.2时,就不会再需要输入密码了。同样的步骤再执行3、4的极其。 文本文件hostlist可以如下 192.168.2.2 192.168.2.3 192.168.2.4 #!/bin/shdoCommand(){     hosts=`sed -n'/^[^#]/p'hostlist` for   host  in   $hosts do echo "" echo  HOST$host ssh  $host  "$@"  done return 0 } if  [  $# -lt 1 ] then echo "$0cmd" exit  fi do  Command "$@" echo "return from doCommand" 执行命令(记得先对doCommand.s h增加执行权限 chmod u+x doCommand.sh) ./doCommand.sh “ls -al /root/” 这样该脚本就会在每台机器上执行”ls -al /root/”这个命令,并返回结果在信任主机上。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7630903.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-08
下一篇 2023-04-08

发表评论

登录后才能评论

评论列表(0条)

保存