Всем привет, написал простого бота для управления локальными компами, стал вопрос в том, что для этого используются разные скрипты с незначительными изменениями в соответствии с тем, кто пишет команду боту.
bash скрипты генерируются с названием $user-status.sh
Можно ли каким то образом, дабы не загромождать сам код бота блоком #statusIP, просто использовать переменное имя в этом скрипте в зависимости от того кто пишет?
class SSHWrapper(object):
def __init__(self, user='user', psw='pass1234', port=22):
self.user = user
self.psw = psw
self.port = port
self.ssh = paramiko.SSHClient()
self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#statusIP
def get_status(self, host, user=None, psw=None, port=None):
self.ssh.connect(
hostname=host,
port=port or self.port,
username=user or self.user,
password=psw or self.psw
)
# Выполнение команды
stdin, stdout, stderr = self.ssh.exec_command("$user-status.sh")
# Читаем результат:
result = stdout.read() + stderr.read()
self.ssh.close()
return result
ssh = SSHWrapper()
def listener(messages):
#STATUSIP
@bot.message_handler(commands=['status'])
def handle_status_request(message):
# получение из чата IP сервака
ip = message.text.split()[-1]
thrue_ip = re.findall(r'[1][9][2].[1][6][8].\d{1,3}\.\d{1,3}', ip)
if ip in thrue_ip:
# проверка его на доступность
r = pyping.ping(ip)
if r.ret_code == 0:
result = ssh.get_status(ip)
bot.send_message(message.chat.id, result)
else:
result = ("Комп недоступен.")
bot.send_message(message.chat.id, result)
else:
bot.send_message(message.chat.id, "*Команда НЕ распознана.*\nВероятнее всего НЕ указан (указан неправильно) IP адрес нужного тебе компа.", parse_mode="Markdown")
bot.set_update_listener(listener)
while True:
try:
bot.polling(none_stop=True)
except Exception as err:
logging.error(err)
time.sleep(10)