Инструменты пользователя

Инструменты сайта


python_konspekt_sysadmin

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

python_konspekt_sysadmin [2015/02/06 03:55]
admin создано
python_konspekt_sysadmin [2015/02/06 03:56] (текущий)
admin
Строка 1: Строка 1:
 ====== Python в системном администрировании UNIX и Linux, Ноа Гифт, Джереми М. Джонс====== ====== Python в системном администрировании UNIX и Linux, Ноа Гифт, Джереми М. Джонс======
 +
 +subprocess
 +
 +import subprocess
 +subprocess.call(["​ls","​-l ","/​tmp/"​])
 +subprocess.call(["​cat","/​root/​script/​w2"​])
 +subprocess.call(["​uname","​-a"​])
 +subprocess.call(["​команда",​ "​аргумент","​другой_аргумент_или_путь"​])
 +
 +импортирует модули и другие файлы содержащие програмный код
 +
 +#​!/​usr/​bin/​env python
 +
 +import subprocess
 +
 +uname = "​uname"​
 +uname_arg = "​-a"​
 +print "​Gathering system information with %s command:​\n"​ % uname
 +subprocess.call([uname,​uname_arg])
 +
 +Пр. "​Получение информации о системе"​
 +
 +#​!/​usr/​bin/​env python
 +
 +import subprocess
 +
 +def uname_func():​
 +    uname = "​uname"​
 +    uname_arg = "​-a"​
 +    print "​Gathering system information with %s command:​\n"​ % uname
 +    subprocess.call([uname,​uname_arg])
 +
 +def disk_func():​
 +    diskspace = "​df"​
 +    diskspace_arg = "​-h"​
 +    print "​\nGathering diskspace infomation with %s command:​\n"​ % diskspace
 +    subprocess.call([diskspace,​ diskspace_arg])
 +
 +def main():
 +    uname_func()
 +    disk_func()
 +
 +main()
 +
 +Импорт.
 +При импортивоаании скрипта он выполняется,​ чтоб такого не происходило нужно выполнить проверку:​
 +if __name__ == "​__main__":​
 +    main()
 +
 +IPython
 +
 +ничего нет, нужно заполнить
 +
 +Текст.
 +
 +In [1]: string1 = 'This is a string'​
 +In [2]: string2 = "This is another string"​
 +In [3]: string3 = '''​This is still another string'''​
 +In [4]: string4 = """​And one more string"""​
 +
 +Апострофы и кавычки взаимозаменяемы. Для экранирования используется \  ​
 +Пр. "​ol\"​o\"​lo"​
 +
 +Экранированные последовательности в языке Python
 +Последовательность Интерпретируется как
 +\newline Игнорируется
 +\\ Символ обратного слеша
 +\' Апостроф
 +\" Кавычка
 +\a ASCII-символ звукового сигнала
 +\b ASCII-символ забоя
 +\f ASCII-символ перевода формата (страницы)
 +\n ASCII-символ новой строки
 +\N{имя} Именованный символ Юникода (только для строк
 +в кодировке Юникод)
 +\r ASCII-символ возврата каретки
 +\t ASCII-символ горизонтальной табуляции
 +\uxxxx Шестнадцатеричный код 16-битового символа
 +(только для строк в кодировке Юникод)
 +\Uxxxxxxxx Шестнадцатеричный код 32-битового символа
 +(только для строк в кодировке Юникод)
 +\v ASCII-символ вертикальной табуляции
 +\ooo Восьмеричный код символа
 +\xhh Шестнадцатеричный код символа
 +
 +
 +Операторы in и not in могут использоваться для проверки вхождения строки в строку,​ возвращают True или False
 +
 +Чтоб узнать в какой позиции находится индекс можно использовать методы find() и index()
 +uname.index('​Linux'​)
 +uname.find('​Linux'​)
 +
 +Методы startswith() и endswith() определяют начинается или заканчивается строка определенной подстрокой.
 +
 +In [1]: some_string = "​Raymond Luxury-Yacht"​
 +In [2]: some_string.startswith("​Raymond"​)
 +Out[2]: True
 +In [3]: some_string.startswith("​Throatwarbler"​)
 +Out[3]: False
 +In [4]: some_string.endswith("​Luxury-Yacht"​)
 +Out[4]: True
 +In [5]: some_string.endswith("​Mangrove"​)
 +Out[5]: False
 +
 +Методы lstrip(), rstrip(), strip()
 +
 +lstrip() без аргументов удаляет пробельные символы в начале строки.
 +srtrip() без аргументов удаляет пробельные символы в конце строки.
 +strip() удаляет пробельные символы в начале и конце строки.
 +
 +все 3 метода не изменяют строку,​ а возвращают новый строковый объект.
 +Можно явно указать какой симвло нужно удалить.
 +In [1]: xml_tag = "<​some_tag>"​
 +In [2]: xml_tag.lstrip("<"​)
 +Out[2]: '​some_tag>'​
 +In [3]: xml_tag.strip("<"​).strip(">"​)
 +Out[3]: '​some_tag'​
 +Так же они удаляю любые последовательности вхождения
 +In [7]: xml_tag.strip("<>"​)
 +Out[7]: '​some_tag'​
 +
 +In [8]: gt_lt_str = "<><><>​gt lt str<><><>"​
 +In [9]: gt_lt_str.strip("<>"​)
 +Out[9]: 'gt lt str'
 +In [10]: gt_lt_str.strip("><"​)
 +Out[10]: 'gt lt str'
 +
 +Методы upper() и lower() приводят все символы строки в верхний\нижний регистр
 +
 +Метод split() извлекает часть строки ограниченой разделителями.
 +
 +In [1]: comma_delim_string = "​pos1,​pos2,​pos3"​
 +In [2]: pipe_delim_string = "​pipepos1|pipepos2|pipepos3"​
 +In [3]: comma_delim_string.split(','​)
 +Out[3]: ['​pos1',​ '​pos2',​ '​pos3'​]
 +In [4]: pipe_delim_string.split('​|'​)
 +Out[4]: ['​pipepos1',​ '​pipepos2',​ '​pipepos3'​]
 +
 +Можно указать максимальное число разбиений split(',',​ 1).
 +
 +In [1]: two_field_string = "​8675309,​This is a freeform, plain text, string"​
 +In [2]: two_field_string.split(',',​ 1)
 +Out[2]: ['​8675309',​ 'This is a freeform, plain text, string'​]
 +
 +split() без аргументов разделит строку по пробельным символам.
 +
 +
 +Метод splitlines() разделяет текст по строкам.
 +
 +Метод join() объеденяет в строку уже имеющиеся данные,​ работает только со строками.
 +
 +In [1]: some_list = ['​one',​ '​two',​ '​three',​ '​four'​]
 +In [2]: ','​.join(some_list)
 +Out[2]: '​one,​two,​three,​four'​
 +
 +In [4]: '​\t'​.join(some_list)
 +Out[4]: '​one\ttwo\tthree\tfour'​
 +
 +Можно использовать выражение-генератор:​
 +In [5]: ","​.join(str(i) for i in some_list)
 +Out[5]: '​0,​1,​2,​3,​4,​5,​6,​7,​8,​9'​
 +
 +Метод replace() принимает 2 аргумента,​ строку которую нужно заменить и строку на которую нужно заменить.
 +
 +In [1]: replacable_string = "​trancendental hibernational nation"​
 +In [2]: replacable_string.replace("​nation",​ "​natty"​)
 +Out[2]: '​trancendental hibernattyal natty'
 +
 +
 +
 +Использование регулярных выражений.
 +
 +In [1]: import re
 +In [2]: re_string = "​{{(.*?​)}}"​
 +In [3]: some_string = "this is a string with {{words}} embedded in\
 +...: {{curly brackets}} to show an {{example}} of {{regular expressions}}"​
 +In [4]: for match in re.findall(re_string,​ some_string):​
 +...: print "​MATCH->",​ match
 +...:
 +MATCH-> words
 +MATCH-> curly brackets
 +MATCH-> example
 +MATCH-> regular expressions
 +
 +Простое регулярное выражение,​ скомпилированный шаблон
 +In [1]: import re
 +In [2]: re_obj = re.compile("​{{(.*?​)}}"​)
 +In [3]: some_string = "this is a string with {{words}} embedded in\
 +...: {{curly brackets}} to show an {{example}} of {{regular expressions}}"​
 +In [4]: for match in re_obj.findall(some_string):​
 +...: print "​MATCH->",​ match
 +...:
 +MATCH-> words
 +MATCH-> curly brackets
 +MATCH-> example
 +MATCH-> regular expressions
 +
 +Метод использующий скомпилированый шаблон работает быстрее
 +
 +ElementTree
 +
 +<ValCurs Date="​06.02.2015"​ name="​Foreign Currency Market">​
 +<Valute ID="​R01010">​
 + NumCode>​036</​NumCode>​
 + <​CharCode>​AUD</​CharCode>​
 + <​Nominal>​1</​Nominal>​
 + <​Name>​Австралийский доллар</​Name>​
 + <​Value>​53,​4619</​Value>​
 +</​Valute>​
 +
 +#​!/​usr/​bin/​env python
 +# -*- coding: utf-8 -*-
 +
 +import urllib
 +from xml.etree import ElementTree as ET
 +
 +id_dollar = "​R01235"​
 +id_evro = "​R01239"​
 +
 +valuta = ET.parse(urllib.urlopen("​http://​www.cbr.ru/​scripts/​XML_daily.asp?​date_req"​))
 +
 +for  line in valuta.findall('​Valute'​):​
 +    id_v = line.get('​ID'​)
 +    if id_v == id_dollar:
 +        rub = line.find('​Value'​).text
 +        print "​\nКурс доллара",​rub,"​рублей"​
 +    if id_v == id_evro:
 +        rub = line.find('​Value'​).text
 +        print "​\nКурс евро",​rub,"​рублей"​
 +
 +
 +
 +urllib ​
 +
 +In [1]: import urllib
 +In [2]: url_file = urllib.urlopen("​http://​docs.python.org/​lib/​module-urllib.html"​)
 +In [3]: urllib_docs = url_file.read()
 +In [4]: url_file.close()
 +In [5]: len(urllib_docs)
 +Out[5]: 28486
 +In [6]: urllib_docs[:​80]
 +Out[6]: '<​!DOCTYPE html PUBLIC "​-//​W3C//​DTD HTML 4.0 Transitional//​EN">​\
 +n<​html>​\n<​head>​\n<​li'​
 +In [7]: urllib_docs[-80:​]
 +Out[7]: '​nt...</​a></​i>​ for information on suggesting changes.\
 +n</​address>​\n</​body>​\n</​html>​\n'​
 +
 +
 +Сети
 +
 +socket
python_konspekt_sysadmin.txt · Последние изменения: 2015/02/06 03:56 — admin