我正在编写一个将从cron调用的bash脚本。

bash脚本运行一个python命令,通过使用pythons os.isatty函数检测它何时在终端中,并输出不同的东西,具体取决于它是手动运行还是通过cron运行。 这使得调试非常困难,我想这样做,以便它总是假设它不在TTY中。

我希望能够在bash脚本中添加一些内容来欺骗它不在终端中运行的python脚本,因此总是输出相同的东西。

为了确认,我控制了bash脚本,但不想编辑python,因为这是一个打包的应用程序。

有任何想法吗?

我希望这是有道理的。

非常感谢你提前。

===============>>#1 票数:5 已采纳

您可以将输出重定向到cat (假设脚本测试sys.stdout的文件描述符的atty )。

python myscript.py | cat

a.py

import sys
print sys.stdout.isatty()

去测试:

> python a.py
True
> python a.py | cat
False

  ask by Dogsbody translate from so

未解决问题?本站智能推荐:

2回复

使用popen和专用的TTY Python运行交互式Bash

我需要在Python中使用它自己的专用TTY在一个单独的进程中运行一个交互式Bash实例(我不能使用pexpect)。 我使用了这个通常在类似程序中使用过的代码片段: 但是当我运行它时,我得到以下输出: 运行的Strace显示一些错误: 代码片段看起来很简单,Bash没
2回复

使用pexpect / bash时防止换行

当执行以下脚本(简化示例)时: #!/usr/bin/env python import pexpect spawn = pexpect.spawn('/bin/bash') with open('/tmp/logfile.log', 'w') as f: spawn.logfile_
2回复

Python读写tty

背景:如果需要,请跳至问题部分 我正在研究测试设备的前端。 前端的目的是使编写长测试脚本更容易。 几乎只是让它们更具人性化和可写性。 该设备将使用Prologix GPIB-USB控制器进行测试(参见prologix.biz)。 我们在http://heliosoph.mit-
1回复

Python脚本在bash中运行,但不在cron中运行?

我编写了一个python脚本,该脚本可进行reddit(使用PRAW),特定的subreddit,并使用youtube-dl从Youtube下载播客片段。 我将脚本放在/ bin文件夹中,因此可以在bash的任何位置运行它。 问题在于它可以在bash中正常运行,而在cron中则完全不能运行。
1回复

如何将bash参数传递给cron作业中的python脚本?

我有一个python应用程序,它使用getopt()来解析参数的命令行。 它在交互式bash shell中工作,或者在从命令行调用的bash脚本中工作正常,当通过cron从bash shell脚本中调用时,它不会执行。 我正在使用Fedora 15。 当作为cron作业调用时,应用程序
1回复

Crontab上的Python不执行bash脚本

这段代码可以手动完美运行,但是在crontab上却无法正常工作。 在互联网上搜索后,我发现他们说在crontab上更改或设置了您的“ PATH”变量。 我更改了“ PATH”变量,但仍无法正常工作。 Crontab日志文件写“ checkpoint1”之后,就什么也没有了。 因此,
2回复

Crontab运行一个运行多个python脚本的bash脚本

我是linux的初学者。 我想每30秒运行多个python脚本,并且我打算使用bash脚本(同时运行多个python脚本)和crontab(安排脚本每30秒运行一次)来执行此操作。 这是我的bash脚本的方式: 这就是我放在crontab中的内容: 如果我手动运行/bin
1回复

Bash脚本手动执行Python,但不是从cron执行

我已经尝试调试了一段时间,感觉好像我已经尝试了一切。 由于公司原因,对代码稍加修改为***。 当以本地用户身份从会话运行时,以下命令将按预期执行。 其中run.sh只是在virtualenv中运行Python的包装: 我在Python主程序中放置了一条print语句,
2回复

与直接执行时不同的运行bash脚本(运行python脚本)的Cron作业

我有一个创建csv并将其保存到的python脚本: 然后bash脚本调用python脚本: 然后cron每天运行bash脚本。 当我手动运行bash脚本时,一切正常,日期正确。 但是,当它由cron运行时,它似乎并不会覆盖csv文件,而只是发送一个已经在/ temp文件夹
2回复

由Cron定期调用的Bash脚本运行时无法执行Python脚本

我的问题已解决:我提供了python脚本的执行权限,在/ etc /目录中添加了cron.allow文件(该文件包含唯一的条目“ pi”,不带引号,这是我的用户名),并提供了完整路径到python脚本。 我无法确定哪种解决方案可以使它起作用,因此要感谢glenn jackman和Abhij