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

Elsaphaba   
   Á¶È¸ 5686   Ãßõ 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 903/5686
2014-05   4976952   Á¤ÀºÁØ1
2015-12   1513064   ¹é¸Þ°¡
2012-02   6557   ½ÂÈĴϵµÄì
2016-08   4910   ¹öÁö´Ï¾Æ
2017-08   4035   bsdunix
2021-04   2554   ´«Àǽð£
2015-07   5285   user
2017-08   3878   âõÀdz¯°³
2020-01   6484   ¸¶·çHOON
2017-08   3430   ¹«¾Æ
08-25   850   alpha099
2012-03   9145   ÇöÁ¤»ç¶û
2012-03   5482   ºý½Ã´Ù
2012-03   6785   ÀÌÀ±ÁÖ
2014-04   3224   ¾Æ¶ó¾ß
2015-08   5026   chotws
2017-09   3523   song05
2014-04   3666   ÇϾçÆĵµ
09-07   902   º½µéÆÇ¿¡¼­´Ù
2017-09   3517   ½Ã°ñÁý³ë¾È
2016-08   5804   ½ºÆ®¶ó´Ù
2017-09   4438   °¡ºü·Î±¸³ª