Telnet ile bir veri kaydedici ile iletişim kurmak istiyorum. Bu nedenle, aşağıdaki python-senaryo yazdı: komut çalıştırarakPython ile Plink penceresinin kapatılması
import subprocess
command ='plink.exe -telnet -P 23 12.17.46.06'
p = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, bufsize=1, shell=False)
answer = p.communicate('command')[0]
print answer
, bir plink-pencere açılır. Python betiği, plink komut penceresinin içinde bazı eylemlerin yapılmasını bekler gibi görünüyor. Pencereyi manuel olarak kapatarak, istenen "cevap" python içinde görünür.
Python'u doğrudan python'dan kapatmak için bir komut/yordam arıyorum. Sadece alt süreçleri kapatmak için yeterli görünmüyor, çünkü bu durumda sadece plython ile plink arasındaki iletişim plink.exe programının kendiliğinden kapanmıyor.
Herhangi bir yardım için teşekkür ederiz! Saygılarımızla, Phil
İletişim() - komutunun açıklaması için teşekkürler. Bununla birlikte, soru doğrudan pythondan nasıl plinkhondan çıkılacağından kaynaklanmaktadır. Python betiği Windows 7 64-bit'te çalışır. –
Sorunuz bir [XY Problem] 'dir (https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Bağlantı kapatıldığında plink çıkacaktır. Onu ne zaman öldüreceğini * nasıl bileceksin? İsterseniz ['.kill()'] diyerek onu öldürebilirsiniz (https://docs.python.org/3/library/subprocess.html#subprocess.Popen.kill). Elbette, programınız işlemin sona erdirilmesini beklerken engellenirken hiçbir şey yapamaz. Ya çoklu işlenmeyi öğrenmek (hata yapmadan yapılması çok zordur) ya da iletişim kurmak için zaman aşımı sağlamak veya boruyu yönetmek için engelleyici olmayan bir yaklaşım kullanmak isteyeceksiniz. – dsh
Tamam, o zaman sorunumu yeniden formüle etmeliyim: plinkhon ** ile kurulan telnet bağlantısını python ** ile nasıl öldürebilirim? Zaman aşımı ile ilgili öneriniz benim için yeterli olacaktı. Bununla birlikte, daha önce de belirttiğim gibi, python'dan plink'ten, plink'in kendi telnet bağlantısına değil, plink'e geçişini sonlandırabilirim. –