gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 19:09:27 25 4
gpt4 key购买 nike

我有一个简单的 ansible 剧本,它将调用远程服务器上的 shell 脚本,shell 脚本将调用另一个 python 脚本,它会做一些事情,当我运行 ansible 剧本时,脚本不工作,但是当我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()

那些import在这里没有用到,会在我的真实脚本中用到,这里我只是在文件中写一行用于调试。

ansible 剧本就像:

---
- hosts: servers

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

start.sh 然后简单地调用 python 脚本:

#!/bin/sh
/start.py

最佳答案

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

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

这导致了问题,我猜导入的前三个模块与标准 io 相关,所以解决方案是使用 nohup。

再次,对于不完整的问题非常抱歉。

关于python - 为什么使用 ansible 时 Python 脚本的工作方式不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42242458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com