2013-04-16 11 views
6

Sto scrivendo uno script di bash che verrà chiamato da cron.Fool python's os.isatty da uno script di bash

Lo script bash esegue un comando python che rileva quando si trova in un terminale utilizzando pythons os.isatty function e restituisce diversi elementi a seconda che venga eseguito manualmente o tramite un cron. Questo rende molto difficile il debugging e mi piacerebbe farlo in modo tale che presupponga sempre che NON sia in un TTY.

Vorrei essere in grado di aggiungere qualcosa allo script di bash per ingannare lo script python che non viene eseguito in un terminale e che quindi restituisce sempre la stessa cosa.

Per confermare, ho il controllo dello script di bash ma non voglio modificare il python in quanto si tratta di un'app in pacchetto.

Qualche idea?

Spero che abbia senso.

Grazie mille in anticipo.

+0

per chiarire: vuoi lo script a "pensare" che _is_ esecuzione con una tty o che _per chi not_ correndo con uno? –

+0

chiama semplicemente isatty una volta e lo memorizza in qualche luogo accessibile a livello globale ... ora puoi semplicemente impostare il tuo valore true o false ... se stai facendo os.isatty dappertutto probabilmente non è una grande forma –

+0

ExP: I piacerebbe che lo script "pensasse" che non è in esecuzione con un TTY – Dogsbody

risposta

5

È possibile reindirizzare l'output su cat (presupponendo che lo script verifichi il atty -nessi descrittore di file sys.stdout).

python myscript.py | cat 

a.py

import sys 
print sys.stdout.isatty() 

alla prova:

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

Brillante! Funziona come un fascino. Grazie :-) – Dogsbody

Problemi correlati