首页 文章

使用ansible时为什么Python脚本的工作方式不同?

提问于
浏览
3

我有一个简单的ansible playbook,它将在远程服务器上调用shell脚本,shell脚本将调用另一个python脚本,这将执行某些操作,当我运行ansible playbook时,脚本无法正常工作,但是当我ssh到服务器并手动运行相同的命令,它工作 . 我做了一些调试,似乎在调用python脚本时,如果我从python脚本中删除所有import语句,它可以从ansible工作,但我不明白为什么它在我ssh到服务器时工作并且想要对如何解决此问题有一些建议 .

python脚本:

#!/usr/bin/python
import socket
import argparse
import logging
import subprocess
import time
import imp

def main():
    f = open('/afile', 'w')
    f.write('a test line')
    f.close()
if __name__ == '__main__':
    main()

那些导入不在这里使用,它将在我的真实脚本中使用,这里我只是在一个文件中写一行进行调试 .

ansible剧本就像:

---
- hosts: servers

tasks:
  - name: trigger the script
    shell: /start.sh

然后start.sh只是调用python脚本:

#!/bin/sh
/start.py

1 回答

  • 0

    对不起,这是我的坏,我没有把所有脚本放在这里,似乎有另一个脚本有类似的东西

    #!/bin/sh
    /start & >> stdout.log
    

    这引起了问题,我猜导入的前三个模块都有与标准io相关的东西,所以解决方案是使用nohup .

    再次,非常抱歉这个不完整的问题 .

相关问题