Найти - Пользователи
Полная версия: Skype4Py: переход на новую строку
Начало » Центр помощи » Skype4Py: переход на новую строку
1
wh1te
Всем привет! Ребята, кто моет подсказать, как сделать переход на новую строку (carriage return) в python?
Я пытаюсь отправлять оповещения системы монитоирнга Nagios через Skype. Всё работает отлично, но хотелось бы более читабельный вид сообщений, чтобы тело сообщения было не в одну строку. Сейчас выглядет так (в скайпе):
RECOVERY Host: nagios-test Service: PING Info: PING OK 1.22ms

А хотелось бы, чтобы это было так:
RECOVERY
Host: nagios-test
Service: PING
Info: PING OK 1.22ms

Отправку я делаю с помощью этого BASH-скрипта, который в свою очередь передает аргументы в python-скрипт (см. ниже):
/usr/local/nagios/sbin/skype_alert.sh
#!/bin/bash
export DISPLAY=:0
PT=`which python`
SKYPE_LOGIN=$1
SKYPE_MESSAGE="${@:2}"
$PT /usr/local/nagios/sbin/skype_alert.py $SKYPE_LOGIN "$SKYPE_MESSAGE"

/usr/local/nagios/sbin/skype_alert.py:
#!/usr/bin/python
import Skype4Py
import sys
skype = Skype4Py.Skype()
skype.Attach()
user = sys.argv[1]
msg=' '.join(sys.argv[2:]) 
skype.SendMessage(user, msg)

Ну, и сама отправка из командой строки:
$ ]$ /usr/local/nagios/sbin/skype_alert.sh my_skype_login "RECOVERY\\n" "Host: nagios-test\\r" "Service: PING" "Info: PING OK 1.22ms"

В результате я вижу в скайпе:
RECOVERY\n Host: nagios-test\r Service: PING Info: PING OK 1.22ms

Как видно в результате, ни \n, ни \r не срабатывают
ZerG
А так
"RECOVERY \n Host: nagios-test \r Service: PING Info: PING OK 1.22ms"
wh1te
ZerG, спасибо за ответ)
Да, с этого всё начиналось. Делаю так:
$ /usr/local/nagios/sbin/skype_alert.sh my_skype_login "RECOVERY \n" "Host: nagios-test \r" "Service: PING" "Info: PING OK 1.22ms"

Получаю:
RECOVERY \n Host: nagios-test \r Service: PING Info: PING OK 1.22ms

ZerG
А так

“RECOVERY \n Host: nagios-test \r Service: PING Info: PING OK 1.22ms”

Так тоже пробовал:
$ /usr/local/nagios/sbin/skype_alert.sh my_skype_login "RECOVERY \n Host: nagios-test \r Service: PING Info: PING OK 1.22ms"
Получаю:
RECOVERY \n Host: nagios-test \r Service: PING Info: PING OK 1.22ms
FishHook
# -*- coding:utf-8 -*-
import sys
myString = sys.argv[1]
#decoded_string = bytes(myString, "utf-8").decode("unicode_escape") # python3
decoded_string = myString.decode('string_escape') # python 2
print (decoded_string)
wh1te
FishHook
# -*- coding:utf-8 -*- import sys myString = sys.argv #decoded_string = bytes(myString, “utf-8”).decode(“unicode_escape”) # python3 decoded_string = myString.decode('string_escape') # python 2 print (decoded_string)

Да, сорри, забыл упомянуть версию Python:
[nagios@uis-nagios libexec]$ python -V
Python 2.6.6

Просто супер! Работает!)))
Привел код к такому виду:
#!/usr/bin/python
import Skype4Py
import sys
skype = Skype4Py.Skype()
skype.Attach()
user = sys.argv[1]
msg=' '.join(sys.argv[2:]) 
decoded_string = msg.decode('string_escape')
print (decoded_string)
skype.SendMessage(user, decoded_string)

Запускаю:
$ /usr/local/nagios/sbin/skype_alert.sh y.kazakevich "RECOVERY\n" "Host: nagios-test\n" "Service: PING\n" "Info: PING OK 1.22ms\n"
Получаю:
RECOVERY
Host: nagios-test
Service: PING
Info: PING OK 1.22ms

Рецепт продублировал на stackoverflow.com и superuser.com.
Спасибо огромное!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB