Comments 63
Мне кажется примеры притянуты за уши. Ну не удобно админу смотреть на права доступа в виде
Это ж скока места в консоли пропадает! Гораздо привычней стандартное rw-r--r--.
Тоже самое и по остальным примерам.
USR имеет R права доступа
USR имеет W права доступа
USR не имеет X прав доступа
GRP имеет R права доступа
GRP не имеет W прав доступа
Это ж скока места в консоли пропадает! Гораздо привычней стандартное rw-r--r--.
Тоже самое и по остальным примерам.
Мне кажется автор показал этим, что с помощью питона сисадмин может изменить привычный ход вещей.
Согласен целиком и полностью.
К тому же ввод параметров через интерфейс — это самое неудобное, что можно придумать.
history для того и дана, чтобы облегчать работу, а здесь — сплошные никому не нужные рюшечки.
К тому же ввод параметров через интерфейс — это самое неудобное, что можно придумать.
history для того и дана, чтобы облегчать работу, а здесь — сплошные никому не нужные рюшечки.
Да, питон — сила. Недавно столкнулся с тем, что надо было автоматизировать работу с железкой по телнету, которой нужно было посылать цифры, соответственно пунктам меню. Сначала пал выбор на Expect, однако несмотря на то, что на локальной машине под XP все было идеально, на 2003 сервере работать отказалось. Гугление привело к тому, что подобного не нашел и встала необходимость изучить язык Expect'а. Затем empty, но тоже что-то не сложилось. И тут пришел совет коллеги насчет модуля telnetlib… и проблема решена, очень просто и надежно :)
Может я не в тему, но мне нужна помощь в выборе книги по питону (хорошо дружу с PHP, осваиваю ООП, ООА, паттерны, поэтому серия для чайников не интересует). Великий язык, нужно осваивать.
можно почитать туториал, который идлет в комплекте поставки и diveintopython.org/
diveintopython.org
Dive into Python. Очень хорошая книга, на мой взгляд. С хорошими примерами. Насколько я помню, она open source и переведена на много языков.
www.diveintopython.org/
www.diveintopython.org/
Лучше официальной документации не найти. Там в начале есть довольно большой раздел Tutorial и описание языка, а дальше все равно придется осваивать стандартную библиотеку по этой документации.
Python. Essential reference
D. Beazley
D. Beazley
Мне книга Лутца «Изучаем Python» понравилась
Мне в свое время понравился учебник на ИНТУИТе
www.intuit.ru/department/pl/python/
www.intuit.ru/department/pl/python/
Не нужен, не нужен, НЕ НУЖЕН Python для таких задач!!! Поймите это!
Согласен. По мне так bash вполне подойдет.
именно для таких не нужен, а вот когда нужно автоматизировать что то посложнее типа отсылки писем, заливки файлов по фтп и т.д. то он таки нужен.
find -size +1M | while read file; do let «dir=`du -b $file`/1024/1024/10»; test -d $dir || mkdir $dir; mv $file $dir; done
Не могу представить себе задачу админа, которую нужно писать на питоне на несколько десятков строк, и которую нельзя написать на sh в пару строк.
Не могу представить себе задачу админа, которую нужно писать на питоне на несколько десятков строк, и которую нельзя написать на sh в пару строк.
по количеству символов 2 строки баша не сильно меньше будут. Код пытона будет сильно удобочитаемее и удобнее для правки.
Автор просто показал дверь, каждый сам решает войти в нее или нет:)
Если сможете показать задачу серверного администрирования которую нельзя решить на баше а можно только на питоне — я сожру свою шляпу
разборка лога и отправка его на удаленную машину бинарными данными. подойдет?
>Если сможете показать задачу серверного администрирования которую нельзя решить на баше а можно только на питоне — я сожру свою шляпу
Говоря «на баше» Вы немного лукавите. На баше — это на баше + grep/awk/sed/cat… + специфические для задачи утилитки (например, snmpget). Каждая из утилиток — отдельный процесс со всеми вытекающими накладными расходами. В скрипте на питоне процесс будет всего один (если сами их не нафоркаете, конечно).
Говоря «на баше» Вы немного лукавите. На баше — это на баше + grep/awk/sed/cat… + специфические для задачи утилитки (например, snmpget). Каждая из утилиток — отдельный процесс со всеми вытекающими накладными расходами. В скрипте на питоне процесс будет всего один (если сами их не нафоркаете, конечно).
у баша утилитки, у питона модули. сравнение вполне корректно
Сравним… Модули — библиотеки. Считываются с диска и загружаются в память процесса питона один раз. Утилитки — отдельные программы. Считываются каждый раз с диска, каждый раз им нужно выделять память, создавать пайпы для общения с ними…
Вот, к примеру:
facha@fuzzy:~$ time ./printtime.sh
real 0m2.226s
user 0m1.044s
sys 0m1.156s
facha@fuzzy:~$ time ./printtime.py
real 0m0.029s
user 0m0.020s
sys 0m0.008s
Дальше код этих мегаскриптов (дисклеймер: если хабр его покоцает — я не виноват):
printtime.sh
#!/bin/sh
for i in `seq 1000`; do echo `date +%s`; done
printtime.py
#!/usr/bin/env python
import time
for i in range(1000): print time.time()
Вот, к примеру:
facha@fuzzy:~$ time ./printtime.sh
real 0m2.226s
user 0m1.044s
sys 0m1.156s
facha@fuzzy:~$ time ./printtime.py
real 0m0.029s
user 0m0.020s
sys 0m0.008s
Дальше код этих мегаскриптов (дисклеймер: если хабр его покоцает — я не виноват):
printtime.sh
#!/bin/sh
for i in `seq 1000`; do echo `date +%s`; done
printtime.py
#!/usr/bin/env python
import time
for i in range(1000): print time.time()
1) Слишком сумбурно, но скажу что скрипт может генерировать еще один скрипт который выполнится пакетно :)
2) mod_spread, mol_slowlog, mod_mysqlog
2) mod_spread, mol_slowlog, mod_mysqlog
Python for Unix and Linux System Administration
Описание: oreilly.com/catalog/9780596515829/
Скачать: narod.ru/disk/8625262000/python-for-unix-and-linux-system-administration.rar.html
Описание: oreilly.com/catalog/9780596515829/
Скачать: narod.ru/disk/8625262000/python-for-unix-and-linux-system-administration.rar.html
Бесполезнячок абсолютный :-)
первый пример работать не будет, отступы съелись после try:
Ждать надо там где статью написали www.ibm.com/developerworks/aix/library/au-python/
А это просто перевод в котором, как это обычно бывает, забыли ссылку на источник.
А это просто перевод в котором, как это обычно бывает, забыли ссылку на источник.
не редкость, когда на серверах даже bash не устанавливают (спасает только set -o emacs), а вы pyton предлагаете.
хорош питон, но баш роднее
commandString = «find » + pattern
commandOutput = commands.getoutput(commandString)
Это подход шелл-программиста. И все остальное прекрасно можно было сделать на баше например. На питоне для этого есть свои методы обхода директорий, свой glob для подстановок. Примеры имеют право на жизнь. Но опять же хорошо что в том же linux шебанговые скрипты не суидны — в этих полно дырок с безопасностью из-за использования шелла.
В общем вердикт: администратору для этих задач вполне хватит bash (и полистать тот же ABS). Некоторые вот используют ipython в качестве основного шелла. Да, этот вариант имеет право на жизнь, но он не всегда оптимален.
Ну и в защиту автора: я сам грешу такими вещами, вот например скрипт для просмотра отспавненных django fcgi приложений у меня на сервере:
Он не оптимален, не гибок, но тоже решает свою задачу.
commandOutput = commands.getoutput(commandString)
Это подход шелл-программиста. И все остальное прекрасно можно было сделать на баше например. На питоне для этого есть свои методы обхода директорий, свой glob для подстановок. Примеры имеют право на жизнь. Но опять же хорошо что в том же linux шебанговые скрипты не суидны — в этих полно дырок с безопасностью из-за использования шелла.
В общем вердикт: администратору для этих задач вполне хватит bash (и полистать тот же ABS). Некоторые вот используют ipython в качестве основного шелла. Да, этот вариант имеет право на жизнь, но он не всегда оптимален.
Ну и в защиту автора: я сам грешу такими вещами, вот например скрипт для просмотра отспавненных django fcgi приложений у меня на сервере:
$ cat /usr/local/bin/djangostat.py #!/usr/bin/env python import os, commands def ksort(x,y): a, b = float(x['pmem']), float(y['pmem']) if a>b: return -1 elif a<b: return 1 else: return 0 def procs(): ll = commands.getoutput('ps aux|grep python').split('\n') return [i.split() for i in ll] def dstat(pp): l = [] for p in pp: if len(p)<13: #print 'BA1', p continue if p[12] != 'runfcgi': #print 'BA2', p continue s = p[11].split('/') if len(s) < 3: #print 'BA3', s continue m = { 'uid': p[0], 'pid': p[1], 'pcpu': p[2], 'pmem': p[3], 'vsz': p[4], 'rss': p[5], 'dom': s[3], 'app': s[5], } l.append(m) return l def pformat(v): if len(v)>3: return v[:-3]+'.'+v[-3:] else: return v def printstat(s): s.sort(ksort) for i in s: print "[%10s] {%5s} %20s %14s: CPU%%:%s MEM%%: %s VSZ/RSS: %s/%s Kb" % ( i['uid'], i['pid'], i['dom'], i['app'], i['pcpu'], i['pmem'], pformat(i['vsz']), pformat(i['rss']), ) if __name__ == '__main__': printstat(dstat(procs()))
Он не оптимален, не гибок, но тоже решает свою задачу.
Python это конечно здорово, но интерактивные скрипты у сисадмина это не юникс-вей.
Вот если бы эти примеры принимали параметры с конвеера, или хотя бы как аргумент командной строки…
Вот если бы эти примеры принимали параметры с конвеера, или хотя бы как аргумент командной строки…
Примеры с IBM.COM))
if len(password) < 8
Так вот прямо и вытащили пароль, ага. Максимум, что этот модуль выдаст вместо пароль в современных линуксах — это «x» (или "*"), начиная с питона 2.5 есть модуль spwd, который умеет вытаскивать хеши.
Но и он поставленную задачу не решает.
«Дружественный вывод» админу не нужен.
Я сейчас вижу смысл Python в написании утилит с простым гуи для пользователей, выполняющих какие-то обслуживающие функции (например в учебных классах для преподавателей — перенос учебных баз пропустившим, чистка для новых слушателей и т.п.), разные обработчики, работающие не через веб-интерфейс (дополнительная обработка статистики прокси, сайтов, результаты тестирования)… + скрипты по массовому обслуживанию однотипных компьютеров в сети…
Sign up to leave a comment.
Python для системных администраторов