안녕하세요....
현재 스마트 플러그를 이용해 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()
http://rabbit129.cafe24.com/gooday//bbs/board.php?bo_table=scrap&wr_id=149
Áö±Ý ¾²½Ã´Â ½Ã½ºÅÛ¿¡ ȣȯµÇ´ÂÁö ¸ð¸£°Ú½À´Ï´Ù.
°ø°³·Î ±Û¾²±â ÇϸéµÇ´ÂÁö¶ó ÄÁÆ®·ÑÀº ¹«Áö ½¬¿îµ¥ ¸»ÀÌÁÒ....
IFTTT¿¡ Æ®À§ÅÍ À¥ÈÅÀÌ ÀÖÀ¸´Ï Æù ½Ã¸®³ª ±¸±Û¾î½Ã½ºÅÏÆ® ¿¬µ¿Çؼ Æ®À§Æ®¿¡ ±Û¾²°Ô ¸¸µé¾îÁֽøé ÆíÇÏ°Ô ¾²½Ç¼öÀÖÁö ¾ÊÀ»±î ½Í¾î¿ä. (´õ ÇϽǼöÀÖÀ¸¸é ioT µð¹ÙÀ̽º¿¡ ½ºÀ§Ä¡ ´©¸£´Â°É·Î.. ±Û¾²°Ô..¶ó´ø°¡..)
ÆÄÀ̽ã ÇÒ²¬ À߸øÇß³×¿ä ¤»
__init__ ¸ÞÀÎ ÇÔ¼ö¿¡ .. start ÇÔ¼ö ºÒ·Á¿Í¾ß Çϴ°Š¾Æ´Ñ°¡¿ä?
__init__ ¾ø¾îµµ .. start(updater,context) ÇØÁÖ¸é ½ÇÇà µÇÁö ¾Ê³ª¿ä?
context ´Â ¹º°¡¿ä? ½ÃÀÛ ÇÔ¼ö¿¡..
±×¸®°í
ÇÔ¼ö¸¦ Àú·¸°Ô ÁßøÇؼ ½áµµ µÇ³ª¿ä?
ÇÔ¼ö ¹ÛÀ¸·Î »©¾ß Çϴ°Š¾Æ´Ñ°¡¿ä?
start() ÇÔ¼ö¸¦ ½ÇÇàÇÏ°í ±× ¾È¿¡¼ ´Ù½Ã get_message ÇØ¾ß Çϴ°Š¾Æ´Ñ°¡¿ä?
openssh ¼¹ö¸¦ ¼³Ä¡Çؼ ssh·Î shoudown ¸í·É¾î¸¦ º¸³»¸é µÉ°Å°°¾Æ¿ä
¿©±â ÂüÁ¶ Çϼż .. »õ·Î ¸¸µå¼Å¾ß ÇÒ°Í °°½À´Ï´Ù.
À§ÀÇ ¿¹Á¦¿¡
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·Î ¹Þ¾Æ¼ ³Ñ°ÜÁÖ°í¿ä..
import os
import subprocess
result = subprocess.getstatusoutput('ipconfig /all')
print(result[1])
2¹ø° ¹è¿°ªÀ¸·Î stdout °¡ ³Ñ¾î¿À³×¿ä .. result ¸¦ ÅÚ·¹±×·¥À¸·Î ³Ñ°ÜÁÖ¸é.. ÀÌ»óÇÏ°Ô ³Ñ¾î°¥µí Çϳ׿ä .
³Ñ±â½Ç¶§ Result[1] À» º¸³»ÁÖ¼Å¾ß ÇÒµí