运行脚本并在远程节点上显示其输出

时间:2014-09-04 10:54:46

标签: bash shell ansible ansible-playbook

我想运行一个无止境的脚本,只想看远程节点上的输出。这可能吗?

也许是这样的:

---
- hosts: server
  gather_facts: False

  tasks:
  - name: Run runserver.sh and save the output of script
    shell: screen -dRR bash /home/dell/tester_server_2/runserver.sh
    async: 99999999999
    poll: 0

但这并没有打开新的屏幕会话,尽管远程虚拟机上的top命令显示脚本已经开始运行

我也玩过其他屏幕选项,比如-d -m -x等

1 个答案:

答案 0 :(得分:0)

我有一个ansible任务,从屏幕内启动一个长时间运行的shell脚本,以便我可以在以后检查它的状态。以下是我如何定义它:

- name: Invoke do-grails reset -solr
  command: /usr/bin/screen -d -m sudo -u czapp /usr/local/bin/do-grails.sh -i -y reset -solr
  async: 60
  poll: 0

编辑:所有这个命令都在调用屏幕以在后台运行命令。在这种情况下的命令是:

sudo -u czapp /usr/local/bin/do-grails.sh -i -y reset -solr

在我的特定情况下,我需要以名为“czapp”的用户身份运行此shell脚本,因此我使用了sudo。您应该能够为命令使用相同的基本方法。在你的情况下,你可能想做这样的事情:

- name: Run runserver.sh and save the output of script
  command: /usr/bin/screen -d -m /home/dell/tester_server_2/runserver.sh
  async: 60
  poll: 0

通过使用“-d -m”调用屏幕,您将告诉它以分离模式启动,因此会创建一个运行指定命令的新屏幕会话,并立即将控制权返回给Ansible。