3월 6, 2026
#Dev_4 Proxmox send_ip.py
해당 내용은 #Dev_3 에서 사용한 send_ip.py의 코드를 다루고 있음.
import json
import ssl
import sys
import subprocess
import time
from urllib.request import Request, urlopen
# --- 설정 정보 ---
TOKEN = ''
CHAT_ID = ''
# --- 텔레그램 전송 함수 ---
def sendMSG(message):
url = f"https://api.telegram.org/bot{TOKEN}/sendMessage"
data = json.dumps({
'chat_id': CHAT_ID,
'text': message,
'parse_mode': 'HTML'
}).encode('utf-8')
# SSL 인증 무시용 context
context = ssl._create_unverified_context()
req = Request(url, data=data, headers={'Content-Type': 'application/json'})
try:
with urlopen(req, context=context) as response:
print("Message sent successfully.")
except Exception as e:
print(f"Error sending message: {e}")
# --- vmbr0 IP 가져오는 함수 ---
def get_vmbr0_ip():
try:
# 리눅스 명령어(ip a)를 실행해서 vmbr0의 IP만 깔끔하게 가져옵니다.
cmd = "ip -4 addr show vmbr0 | grep -oP '(?<=inet\\s)\\d+(\\.\\d+){3}'"
ip = subprocess.check_output(cmd, shell=True).decode('utf-8').strip()
return ip
except Exception as e:
return f"IP를 찾을 수 없음 ({e})"
# --- 메인 실행 ---
if __name__ == "__main__":
# 네트워크가 완전히 붙을 때까지 안전하게 잠시 대기 (스크립트 내에서도 처리)
time.sleep(10)
current_ip = get_vmbr0_ip()
msg = f"<b>[Proxmox 부팅 완료]</b>\n\n현재 IP: <code>{current_ip}</code>\n접속 가능합니다."
sendMSG(msg)
현재는 해당 코드에 tailscale 내부 IP와 pinggy를 추가하여 /pinggy 명령어를 보내면 외부에서도 접근이 가능하도록 pinggy로 임시url을 받은후 봇으로 전송해주는 기능도 추가하여 사용하고 있다.