파이톤은 휴대전화로 원격 제어 컴퓨터를 실현한다

앞말
많은 경우에 우리는 모두 원격 제어 컴퓨터의 수요를 가지고 있다.예를 들어 어떤 물건을 다운로드하고 있으면 컴퓨터를 다운로드한 후에 꺼야 한다.프로그램의 운행 상황을 감시해야 하거나
오늘 우리는 파이톤으로 컴퓨터를 원격 감시하고 제어하는 작은 프로그램을 실현할 것이다.
2. 실현 원리
원격 제어 컴퓨터가 고급스러운 것처럼 들리지만 실현하기는 사실 매우 간단하다.실현 원리는 다음과 같다.
  • 프로그램을 실행하여 프로그램을 끊임없이 메일을 읽게 한다
  • 핸드폰으로 컴퓨터에 메일 보내기
  • 지정한 테마의 메일을 읽었는지 판단하고 있으면, 메일 내용을 가져옵니다
  • 메일 내용에 따라 미리 설정한 함수 실행
  • 컴퓨터를 원격으로 제어하는 법을 배우는 것보다 메일을 읽는 법을 배우는 것이 낫다.물론 위의 절차는 원격 제어만 실현했을 뿐 컴퓨터에 대한 감시는 실현되지 않았다.모니터링은 캡처로 할 수 있다.
    우리는 메일 내용이grab인 것을 읽을 때 컴퓨터 캡처를 보낼 수 있는 명령을 설정할 수 있다.컴퓨터 캡처를 어떻게 휴대전화 메일박스에 보내면 감시 효과가 나타난다.
    어떻게 메일을 보내는지에 관해서는 블로그를 참고할 수 있습니다: 어떻게 Python으로 메일을 보냅니까?여기서는 더 이상 상세하게 말하지 않겠다.다음은 우편물을 어떻게 읽는지 봅시다.
    3. 메일 읽기
    메일을 읽으려면 imbox 모듈을 사용해야 합니다. 설치 문장은 다음과 같습니다.
    pip install imbox
    

    메시지를 읽는 코드는 다음과 같습니다.
    from imbox import Imbox
    
    def read_mail(username, password):
        with Imbox('imap.163.com', username, password, ssl=True) as box:
            all_msg = box.messages(unread=True)
            for uid, message in all_msg:
                #                
                if message.subject == 'Remote Control':
                    #      
                    box.mark_seen(uid)
                    return message.body['plain'][0]
    
    

    우선 위드 문구로 메일박스를 엽니다.그리고 다음 문장을 통해 읽지 않은 모든 메일을 가져옵니다.
    all_msg = box.messages(unread=True)
    

    읽지 않은 메일을 가져오면 메일을 훑어보십시오."Reomte Control"이라는 제목의 메시지를 읽은 것으로 표시하고 텍스트 내용을 반환합니다.
    여기서 주의해야 할 것은'Remote Control'이라는 제목의 메일을 선별했기 때문에 휴대전화로 메일을 보낼 때 주제를'Remote Control'로 설정해야 다른 메일의 방해를 피할 수 있기 때문이다.
    캡처
    캡처는 다음과 같이 PIL 모듈을 사용해야 합니다.
    pip install pillow
    

    캡처된 코드는 간단합니다.
    from PIL import ImageGrab
    
    def grab(sender, to):
       	#       
        surface = ImageGrab.grab()
        #       surface.jpg
        surface.save('surface.jpg')
        #         
        send_mail(sender, to, ['surface.jpg'])
    

    그중sendmail 코드는 다음과 같습니다.
    import yagmail
    
    def send_mail(sender, to, contents):
        smtp = yagmail.SMTP(user=sender, host='smtp.163.com')
        smtp.send(to, subject='Remote Control', contents=contents)
    

    메일 발송에 대한 소개는 위에서 언급한 블로그를 참고할 수 있다.
    5. 전원 끄기
    컴퓨터를 끄는 작업은 매우 간단합니다. 우리는python으로 명령행 문장을 실행할 수 있습니다.코드는 다음과 같습니다.
    import os
    
    def shutdown():
    	#   
        os.system('shutdown -s -t 0')
    

    컴퓨터를 끄는 것 외에 우리는 많은 조작을 수행할 수 있다.몇몇 복잡한 조작에 대해 우리는 일부bat 파일을 미리 편집할 수 있는데, 여기서는 설명하지 않겠다.
    6. 전체 코드
    위에서 우리는 각 부분의 코드를 작성한 다음에 주체 부분의 코드를 다시 보았다.
    def main():
    	#                  
        username = '[email protected]'
        password = '********'
    	
    	#       
        receiver = '[email protected]'
    	
    	#          
        time_space = 5
    	
    	#     
        yagmail.register(username, password)
        
        #     
        while True:
            #       
            msg = read_mail(username, password)
            if msg:
            	#              
                if msg == 'shutdown':
                    shutdown()
                elif msg == 'grab':
                    grab(username, receiver)
            time.sleep(time_space)
    

    우리는 자신의 요구에 따라 기타 기능을 작성할 수 있다.다음은 전체 코드입니다.
    import os
    import time
    import yagmail
    from imbox import Imbox
    from PIL import ImageGrab
    
    
    def send_mail(sender, to, contents):
        smtp = yagmail.SMTP(user=sender, host='smtp.163.com')
        smtp.send(to, subject='Remote Control', contents=contents)
    
    
    def read_mail(username, password):
        with Imbox('imap.163.com', username, password, ssl=True) as box:
            all_msg = box.messages(unread=True)
            for uid, message in all_msg:
                #                
                if message.subject == 'Remote Control':
                    #      
                    box.mark_seen(uid)
                    return message.body['plain'][0]
    
    
    def shutdown():
        os.system('shutdown -s -t 0')
    
    
    def grab(sender, to):
        surface = ImageGrab.grab()
        surface.save('surface.jpg')
        send_mail(sender, to, ['surface.jpg'])
    
    
    def main():
        username = '[email protected]'
        password = '     '
        receiver = '[email protected]'
        time_space = 5
        yagmail.register(username, password)
        while True:
            #       
            msg = read_mail(username, password)
            if msg:
                if msg == 'shutdown':
                    shutdown()
                elif msg == 'grab':
                    grab(username, receiver)
            time.sleep(time_space)
    
    
    if __name__ == '__main__':
        main()
    
    

    좋은 웹페이지 즐겨찾기