2016-03-19 26 views
1

Muhtemelen gerçekten aptalca bir şey yapıyorum ama birisi size yardımcı olabilir. Tek yapmaya çalıştığım bir dosya oluşturuyor. Python bunu gerçekleştirmeyecek, python değişkenlerimi debug ettiğimde, çıktısı olan kabukta ben de belirtebilirim. Lütfen aşağıya bakınız: bu, bazı uzmanlar için zaman kolay bir atık isePython os.stat dosya adı içinde joker genişletmiyor

[[email protected] output]# python /usr/local/nagios/libexec/check_logrip_log_not_stale.py 
    Traceback (most recent call last): 
     File "/usr/local/nagios/libexec/check_logrip_log_not_stale.py", line 36, in <module> 
     print os.stat(logFormat) 
OSError: [Errno 2] No such file or directory: '/home/famnet/logs/output/logrip-out-2016-03-19-*' 

Lütfen beni affet:

[[email protected] output]# cat /usr/local/nagios/libexec/check_logrip_log_not_stale.py 

import os 
import sys 
import datetime 
import time 

# Nagios return values 
nagiosRetValOk  = 0 
nagiosRetValWarn  = 1 
nagiosRetValCritical = 2 

# Below is the filename I am after 
#logrip-out-2016-03-19-1458386101 

dateFormat = datetime.datetime.now().strftime("%Y-%m-%d") 
logFormat = "/home/famnet/logs/output/logrip-out-%s-*" % dateFormat 


print os.stat(logFormat) 

Burada temel komut dosyasını çalıştırmak böyle olur.

Teşekkürler, Ancak, yazdırma hata ayıklama çıktısını aldığımda ve kabukta çalıştığı zaman çalışıyor.

[[email protected] output]# stat /home/famnet/logs/output/logrip-out-2016-03-19-* 
    File: `/home/famnet/logs/output/logrip-out-2016-03-19-1458386101' 
    Size: 42374797  Blocks: 82776  IO Block: 4096 regular file 
Device: fd02h/64770d Inode: 36590817 Links: 1 
Access: (0644/-rw-r--r--) Uid: ( 504/ famnet) Gid: (1100/ staff) 
Access: 2016-03-19 07:15:01.725794193 -0400 
Modify: 2016-03-19 07:44:09.847793116 -0400 
Change: 2016-03-19 07:44:09.847793116 -0400 

cevap

3

Genişletme kullanmayı deneyin ... joker otomatik olarak genişleyen bir çok ortak kabukları özelliği, bu durumda örneğin bash olduğunu. Bu, os.stat'un altında yatan sistem çağrısının bir özelliği değildir.

Birden fazla dosya karşı os.stat aramak istiyorsanız, (glob.glob gibi bir şey kullanarak) bunları listelemek gerekecek, sonra yolun başına bir kez os.stat diyoruz. Böyle bir şey:

for full_path in glob.glob(logFormat): 
    print os.stat(full_path) 

joker bir yol komut satırı STAT(1) çalışabilirsiniz çoklu beton yolları, genişleyebilir, ama kesinlikle sadece tek bir yol argüman alır os.stat kıracak yanı gözlemleyin.

+0

Mükemmel tavsiye, çok teşekkür ederim. Bu cevabı kabul ettim – jaysunn

0

os.stat değil wildcard'ların glob

İlgili konular