2016-03-30 15 views
2

Çıktıyı oluşturan Python içinden bir program çağırmaya çalışıyorum ve bu programla birlikte harici program bittiğinde çalışmak istiyorum. Programlama,Harici programın dosya-çıkışına erişim

"sudo fing -r 1> fingoutput.txt" dır.

Ben

from subprocess import call 

cmd = ['sudo', 'fing', '-r 1'] 

call(cmd) 

ile programı çağırmak başardı ama bunun bir dosyaya çıktı bulunuyor yönlendiremez.

cmd = ['sudo', 'fing', '-r 1 > fingoutput.txt'] 

veya

cmd = ['sudo', 'fing', '-r 1', '> fingoutput.txt'] 

üretim

Hata: Birden fazla ihlal

Ben hatlarının binlerce olabilir çünkü bir dosyaya çıktı yazmak istiyorum.

Yardımlarınız için teşekkürler,

Herbert.

+0

Tüm hatayı gösterebilir misiniz? ve tam olarak ne yapmaya çalışıyorsunuz? – Keatinge

+0

Son hedefim, HP anahtarlarımın hangi Bağlantı Noktasına bağlı olduğu MAC adresini bulmak olacaktır. Bunu artık desteklenmeyen HP ProCurve Manager ile yapabilirim. Bu arada ağımı IP adresleri ve ilgili MAC adresleri için taradım. Fing bunu yapar. Şimdi Fing çıkışını okumak ve networkinformation ile bir veritabanı oluşturmak istiyorum. Hangi IP çevrimiçi, ne sıklıkta ve ne zaman kullanılır. – Herbert

cevap

1

bir dosyaya komutadan çıkışını yönlendirmek için stdout argüman kullanabilirsiniz:

from subprocess import call 

cmd = ['sudo', 'fing', '-r 1'] 
file_ = open('your_file.txt', 'w') 
call(cmd, stdout=file_) 
0

sen hep bu

için gidebilirsiniz kabuk komut kendisinden dosyaya yönlendirmek istiyorsanız
cmd = 'sudo fing -r 1 > fingoutput.txt' 
call(cmd, shell=True) 

Ya

cmd = 'sudo fing -r 1 > fingoutput.txt' 
p = Popen(cmd, shell=True, stdout=PIPE, stdin=PIPE) 

tutulması kabuk = güvenlik sorunlarına yol açabilir Doğru.