หลามระงับเอาต์พุตของกระบวนการย่อย

  • มีความท้าทายในการแฮ็ก
  • ฉันมีไฟล์ที่ป้องกันด้วยรหัสผ่านชื่อ "ล็อค"
  • การเปิดไฟล์ด้วยรหัสผ่านจะส่งคืนรหัส QR
  • จำเป็นต้องกำหนด QR ให้กับ var
  • ไม่ต้องการแสดง QR ทุกครั้ง

ใช้งานได้ แต่มีเอาต์พุต:

var = os.system("./lock %s" % password)

ดังนั้นบอกว่าฉันควรใช้:

var = subprocess.Popen("something.py")

พยายามที่จะผ่านเหมือนด้านบน แต่นั่นล้มเหลวเพราะ "Popen" ต้องการรายการหรือสตริง ถ้าฉันต่อคำสั่งเป็นสตริงก่อนใช้ popen คำสั่งจะยังคงแสดงอยู่

อ่านแล้ว (อย่างน้อย)

ระงับเอาต์พุตของกระบวนการย่อย การส่งผ่านตัวแปรไปยัง Subprocess.Popen วิธีเรียกใช้คำสั่งแต่ไม่ได้รับเอาต์พุต

รหัสเต็ม:

import sys
import os
import subprocess

def file_len(fname):
with open(fname) as f:
    for i, l in enumerate(f):
        pass
    return i + 1

   lock = "/root/share/lock"
   print "Hello"
   passfile = raw_input("Enter the password file name: ")
   assert os.path.exists(passfile), "I did not find the file at, "+str(passfile)
   devnull = open(os.devnull, 'wb')
   trys = file_len(passfile)
   passfile = open(passfile,'r+')
   cnt = 1
   wrong = os.system("./lock penis")

   for password in passfile:
   #       com = ("./lock %s" % password)
   #       var = os.system("./lock %s" %  password)
   var = subprocess.Popen("./lock  %s" % password, stderr=devnull, stdout=devnull)

   if var == wrong:
            os.system('clear')
            cnt += 1
            print ("Try  %s/%s " %(cnt, trys))
            print ("Currently PIN: %s" % password)
    else:
            print "!!!!!!!!!!!!!!!!!"
            print password

การเปลี่ยนเส้นทางไปยัง devnull ก็ไม่ได้ผลเช่นกัน OSError: [ข้อผิดพลาด 2] ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว: ''


person cuilster    schedule 24.04.2018    source แหล่งที่มา


คำตอบ (1)


ฉันขอแนะนำให้คุณลองใช้ os.devnull เป็นเป้าหมายโดยตรงแทนที่จะเปิดเป็นไฟล์ ฉันเชื่อว่าคุณได้รับข้อผิดพลาดเป็นโมฆะ

devnull= open(os.devnul, 'wb')

การตอบสนองจะเป็นเพราะ /dev/null ค่อนข้างเป็นตัวยึดตำแหน่งสำหรับการส่งไปที่ไม่มีอะไร (โมฆะ) แทนที่จะเป็นไฟล์จริงที่คุณสามารถเปิดได้

person Abhishek P    schedule 08.05.2018