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

Elsaphaba   
   Á¶È¸ 5635   Ãßõ 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 4015/5682
2015-12   1488462   ¹é¸Þ°¡
2014-05   4951872   Á¤ÀºÁØ1
2016-02   4496   ¾¾Çü
2020-08   4344   Super64
2023-09   2152   µå¸®µ¥ÀÌ
2020-08   3918   À½À½À½
2023-09   1201   ¿ø»óÇö
2022-02   1502   »ßµ¹À̽½ÇÄÀÌ
2016-02   6874   µÅÁöÅнº
2017-02   6817   ½Å¿ì¼·
2022-02   1547   ¸»¶û9
2017-02   4048   Áö´Ïº¸ÀÌ
2019-06   2764   2cpumem
2023-09   2158   °¡ºü·Î±¸³ª
2017-02   5905   ¹«½¼»ý°¢
2019-06   2541   ¾È±Ô¹Î
2020-09   3112   ·Îº§¸®¾Æ
2010-08   8542   Á¤ÀºÁØ1
2013-07   6339   ±èÀçÇÐ23
2014-12   15184   ¹Ú
2010-08   8516   ÀÌÁ¾¼Û1
2013-08   13803   ¹ÚÁ¤±æinfoeyes