ÅÚ·¹±×·¥ º¿ ÄÚµùÇÏ½Ç ÁÙ ¾Æ½Ã´Â ºÐ °è½Å°¡¿ä ¤Ð¤Ð

Elsaphaba   
   Á¶È¸ 5625   Ãßõ 0    

 

안녕하세요....

현재 스마트 플러그를 이용해 WOL과 비슷한 기능을 구축했습니다!

하지만 서버를 끄려면 RDP를 켜서 직접 종료 버튼을 눌러야 하는 불편함이 있어서

더욱 효과적으로 관리하기 위해 '텔레그램에 서버의 CMD를 연계시키는 봇'을 만들기로 결심하였습니다!

프로그래밍은 막 C언어를 배운 참이라 구글링해서 여러 코드들을 짜집기해 만들었습니다.


하지만... 열심히 구글링으로 짜집기하고 디버깅을 했음에도 불구하고 작동이 되지 않습니다 ㅠㅠ

디버깅은 모두 해 에러 메세지는 뜨지 않습니다만..... .py 파일을 실행하면 켜졌다 바로 꺼집니다

구글링을 해봐도 대부분 CDN에서 운영하는 내용밖에 안나와 대처 방법을 잘 모르겠습니다


혹시 텔레그램 봇을 코딩하실 줄 아시는 분이 계시다면 무엇이 문제인지 알 수 있을까요?

혹시 윈도우에서 구동할 경우 따로 설치해야하는 프로그램이 있는건가요?


구동 환경은 Windows Server 2019이고 실행파일은 .py 파일입니다.

Python-Telegram-Bot 패키지를 설치한 상태입니다.

https://github.com/python-telegram-bot/python-telegram-bot

#기본패키지
import time
#텔레그램 봇 패키지
from telegram.ext import Updater, MessageHandler, Filters, CommandHandler
from telegram import ReplyKeyboardMarkup, ReplyKeyboardRemove, InlineKeyboardButton, InlineKeyboardMarkup
#CMD 패키지
import os
import subprocess


BOT_TOKEN='(토큰 입력)'
updater = Updater( token=BOT_TOKEN, use_context=True )
dispatcher = updater.dispatcher 


#시작
def start(update, context): 
    bot.send_message(chat_id=update.effective_chat.id, text="Enter Password")


    #사용자 확인 및 분기
    def get_message(bot, update) :
       message = update.message.text    
       if message == "Password Key" :


            #Keyword 삭제
             bot.deleteMessage(chat_id=update.message.chat_id, message_id=forward_from_message_id)


            #바로명령 키보드
             KBMenu = [[telegram.KeyboardButton('shutdown')],
                           [telegram.KeyboardButton('Ipconfig /all')]]
             KBMenu_markup = telegram.ReplyKeyboardMarkup(KBMenu)
             bot.send_message(chat_id=update.message.chat_id,
                     text="Direct Order Keyboard",
                     reply_markup=KBMenu_markup)




            #CMD 실행
            def get_message(bot, update) :
            Order = update.message.text


             cmd = Order
             Result = subprocess.getstatusoutput(cmd)
             bot.send_message(chat_id=update.message.chat_id, text=Result)
        
             updater.start_polling() 
             updater.idle()
       
        else :
            bot.stop()
ªÀº±Û Àϼö·Ï ½ÅÁßÇÏ°Ô.
Æ®À§ÅÍ  ƯÁ¤ °èÁ¤À» ¸ð´ÏÅ͸µÇÏ´Ù°¡ Shutdown ¸í·É¾î ³»¸®¸é ¾Ë¾Æ¼­ ²¨Áö´Â°Ô ÀÖ´øµ¥......
http://rabbit129.cafe24.com/gooday//bbs/board.php?bo_table=scrap&wr_id=149

Áö±Ý ¾²½Ã´Â ½Ã½ºÅÛ¿¡ ȣȯµÇ´ÂÁö ¸ð¸£°Ú½À´Ï´Ù.

°ø°³·Î ±Û¾²±â ÇϸéµÇ´ÂÁö¶ó ÄÁÆ®·ÑÀº ¹«Áö ½¬¿îµ¥ ¸»ÀÌÁÒ....


IFTTT¿¡ Æ®À§ÅÍ À¥ÈÅÀÌ ÀÖÀ¸´Ï Æù ½Ã¸®³ª ±¸±Û¾î½Ã½ºÅÏÆ® ¿¬µ¿Çؼ­ Æ®À§Æ®¿¡ ±Û¾²°Ô ¸¸µé¾îÁֽøé ÆíÇÏ°Ô ¾²½Ç¼öÀÖÁö ¾ÊÀ»±î ½Í¾î¿ä. (´õ ÇϽǼöÀÖÀ¸¸é ioT µð¹ÙÀ̽º¿¡ ½ºÀ§Ä¡ ´©¸£´Â°É·Î.. ±Û¾²°Ô..¶ó´ø°¡..)
±èÁ¦¿¬ 2020-09
¿Í.. node ¸¸ º¸´Ù°¡ .. ÆÄÀ̽ã ÄÚµå º¸´Ï±î .. ¼øÂ÷ÀûÀ̶ó ¹Ù·Î ÀÌÇØ°¡ µÇ³×¿ä ¤Ì¤Ì
ÆÄÀ̽ã ÇÒ²¬ À߸øÇß³×¿ä ¤»
±èÁ¦¿¬ 2020-09
½ºÅ¸Æ®¸¦ ¾ÈÇØÁֽŰŠ°°Àºµ¥¿ä
__init__ ¸ÞÀÎ ÇÔ¼ö¿¡ .. start ÇÔ¼ö ºÒ·Á¿Í¾ß Çϴ°Š¾Æ´Ñ°¡¿ä?

__init__ ¾ø¾îµµ .. start(updater,context) ÇØÁÖ¸é ½ÇÇà µÇÁö ¾Ê³ª¿ä?
context ´Â ¹º°¡¿ä? ½ÃÀÛ ÇÔ¼ö¿¡..
±×¸®°í
ÇÔ¼ö¸¦ Àú·¸°Ô ÁßøÇؼ­ ½áµµ µÇ³ª¿ä?
ÇÔ¼ö ¹ÛÀ¸·Î »©¾ß Çϴ°Š¾Æ´Ñ°¡¿ä?
start() ÇÔ¼ö¸¦ ½ÇÇàÇÏ°í ±× ¾È¿¡¼­ ´Ù½Ã  get_message ÇØ¾ß Çϴ°Š¾Æ´Ñ°¡¿ä?
ÆÄÀ̽ãÀº Àß ¸ô¶ó¼­ ´Ù¸¥ ¹æ¹ýÀ» Á¦½ÃÇغ¸ÀÚ¸é
openssh ¼­¹ö¸¦ ¼³Ä¡Çؼ­ ssh·Î shoudown ¸í·É¾î¸¦ º¸³»¸é µÉ°Å°°¾Æ¿ä
±èÁ¦¿¬ 2020-09
https://github.com/python-telegram-bot/python-telegram-bot/blob/master/examples/echobot.py
¿©±â ÂüÁ¶ Çϼż­ .. »õ·Î ¸¸µå¼Å¾ß ÇÒ°Í °°½À´Ï´Ù.

À§ÀÇ ¿¹Á¦¿¡
dp.add_handler(CommandHandler("help", help_command)) ¾Æ·¡ÂÊ¿¡
dp.add_handler(CommandHandler("shutdown", shutdown_command))

³ÖÀ¸½Ã°í
def help_command(update, context):
    """Send a message when the command /help is issued."""
    update.message.reply_text('Help!')

¾Æ·¡ÂÊ¿¡
def shutdown_command(update, context):
    """Send a message when the command /help is issued."""
            Result = subprocess.getstatusoutput('shutdown')
            bot.send_message(chat_id=update.message.chat_id, text=Result)
    update.message.reply_text('Help!')


ÀÌ·±½ÄÀ¸·Î¿ä ..
¹öÆ° ³ª¿À°Ô Çϴ°͵µ .. Â÷ÀÌ ¾øÀ»²®´Ï´Ù ¹öÆ° ´­·¯Áö¸é message·Î ¹Þ¾Æ¼­ ³Ñ°ÜÁÖ°í¿ä..
±èÁ¦¿¬ 2020-09
±×¸®°í Çغ¸´Ï
import os
import subprocess

result = subprocess.getstatusoutput('ipconfig /all')
print(result[1])

2¹ø° ¹è¿­°ªÀ¸·Î stdout °¡ ³Ñ¾î¿À³×¿ä .. result ¸¦ ÅÚ·¹±×·¥À¸·Î ³Ñ°ÜÁÖ¸é.. ÀÌ»óÇÏ°Ô ³Ñ¾î°¥µí Çϳ׿ä .
³Ñ±â½Ç¶§ Result[1] À» º¸³»ÁÖ¼Å¾ß ÇÒµí
RIGIDBODY 2020-09
±×³É, IFTTT ÇÏ°í Webhook°ú Google assistant ¿Í Joins¿¡ Eventghost¿¬µ¿Çϸé ÇÚÆù¿¡¼­ À½¼º¸í·ÉÀ̳ª ŸÀÌÇÎÀ¸·Î Á¾·á½Ãų ¼ö ÀÖ½À´Ï´Ù.


QnA
Á¦¸ñPage 5656/5680
2015-12   1482910   ¹é¸Þ°¡
2014-05   4946231   Á¤ÀºÁØ1
2016-09   4074   ¾Ïºê·Î½Ã¾Æ
2020-03   2631   ¾Æ¸®¾Æ¸®
2009-04   7171   ÃÖ¸¶·ç
2020-03   4972   ssd¸¦¾Ë°í½Í¡¦
2012-07   6393   ±èÁ¦¿¬
2015-10   4715   ºí·ç¿µ»ó
2014-05   5410   ºê·ÎÄݸ®
2023-02   1189   dateno1
2012-08   5337   À±ÁöÈÆ
2015-10   4427   k39214k
2016-10   7199   ÀÌÈñÁÖ
2009-06   7235   ¹é½Âö
2014-06   6456   Å©¶ó¿ìÀú
2019-02   3530   ÇູÇϼ¼
2014-07   3805   ÁöÁ¸
2017-11   3763   ³ªÆÄÀÌ°­½ÂÈÆ
2020-04   4746   95GSR
2014-07   5143   2CPUÃÖÁÖÈñ
2017-11   4763   ±è¿µ±â
2023-03   1968   yummy