Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 19, 2016 10:47:52

wh1te
Зарегистрирован: 2016-04-19
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Skype4Py: переход на новую строку

Всем привет! Ребята, кто моет подсказать, как сделать переход на новую строку (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 не срабатывают

Отредактировано wh1te (Апрель 19, 2016 10:59:07)

Офлайн

#2 Апрель 19, 2016 10:55:04

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2592
Репутация: +  61  -
Профиль   Отправить e-mail  

Skype4Py: переход на новую строку

А так

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



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Отредактировано ZerG (Апрель 19, 2016 10:57:05)

Офлайн

#3 Апрель 19, 2016 10:58:47

wh1te
Зарегистрирован: 2016-04-19
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Skype4Py: переход на новую строку

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

Отредактировано wh1te (Апрель 19, 2016 11:01:53)

Офлайн

#4 Апрель 19, 2016 11:12:57

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Skype4Py: переход на новую строку

# -*- 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)



Офлайн

#5 Апрель 19, 2016 11:28:01

wh1te
Зарегистрирован: 2016-04-19
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Skype4Py: переход на новую строку

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.
Спасибо огромное!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version