Блог laa88

Регистрация

Календарь

<< Ноябрь 2011  

Пн Вт Ср Чт Пт Сб Вс
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

Теги

actionscript  flow  mpd5  python  swf  остатки сна.  сетевое оборудование.  фильмы  юмор 

На странице

RSS - подписка

Пауза в ActionScript 2.0

Пауза делается так:

MovieClip.prototype.ppause = function (seconds) { 
   this.stop (); 
   var pause = setInterval (function (mc) {
      clearInterval (pause); 
      mc.play (); 
   }, seconds*1000, this);
};

Вызов: ppause(1); // задержка в 1 секунду.

 

Взято с www.2u.ru

Теги: swf|actionscript

mpd5 web консоль

Наткнулся на интересную вещь. В mpd5, помимо telnet консоли, есть своя вэб консоль и, как бы парадоксально не звучало, telnet консоль, доступная через web. Работает она несколько неудобно, т.к. проблемно получить команды консоли, и тем более надоедает вместо пробелов вбивать %20. Но тем не менее делается это так:

http://IP_NAS:WEB_PORT_MPD5/bincmd?help

Это выведет список доступных команд. А вот теперь отличие - в консоли (telnet) можно набрать такую команду:

show ?
 

И получим полный вывод справки о пункте консоли show. В вэб все обстоит несколько иначе. Сначала пишется help, а затем указывается то, что нас интересует:

http://IP_NAS:WEB_PORT_MPD5/bincmd?help%20show

Получим список команд доступных в пункте show. А если выполнить:

http://IP_NAS:WEB_PORT_MPD5/bincmd?help%20show%20session  

Получим информацию об использовании подменю session, находящемся в show.

Аналогичным образом можно выполнить запрос на список сессий (список авторизовавшихся):

http://IP_NAS:WEB_PORT_MPD5/bincmd?show%20session  

И объем занятой памяти:

http://IP_NAS:WEB_PORT_MPD5/bincmd?show%20mem 

Теги: mpd5

Простейший клиент и сервер на python (документация)

Сервер:

import SocketServer

class MyTCPHandler(SocketServer.BaseRequestHandler):
"""
The RequestHandler class for our server.

It is instantiated once per connection to the server, and must
override the handle() method to implement communication to the
client.
"""

def handle(self):
# self.request is the TCP socket connected to the client
self.data = self.request.recv(1024).strip()
print "%s wrote:" % self.client_address[0]
print self.data
# just send back the same data, but upper-cased
self.request.send(self.data.upper())

if __name__ == "__main__":
HOST, PORT = "localhost", 9999

# Create the server, binding to localhost on port 9999
server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler)

# Activate the server; this will keep running until you
# interrupt the program with Ctrl-C
server.serve_forever()

Клиент:

import socket
import sys

HOST, PORT = "localhost", 9999
data = " ".join(sys.argv[1:])

# Create a socket (SOCK_STREAM means a TCP socket)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Connect to server and send data
sock.connect((HOST, PORT))
sock.send(data + "\n")

# Receive data from the server and shut down
received = sock.recv(1024)
sock.close()

print "Sent: %s" % data
print "Received: %s" % received

 

Соответственно расстарляем табуляцию.

Теги: python

Простейший вэб сервер на Python

python -m SimpleHTTPServer

Запустит простейший вэб-сервер на Python'е. Считаю полезным для быстрого доступа к собственной машине.

Внимание. Корнем сервера будет считаться pwd директория, в которой выполняется команда.

Теги: python

Python + MySQL. Работа с кириллицей.

Столкнулся с проблемой выбора кириллических записей из БД mysql. Проблема заключалась в том, что при выборе я получал вместо русских букв знаки вопроса. Вопрос решился чтением мануала. Решение получил такое:

#!/usr/bin/env python
# -*- coding: koi8-r -*-

import MySQLdb

local = MySQLdb.connect (host = "localhost", user = "root", passwd = "root_passwd", db = "mydb", charset = "koi8r", use_unicode = False)

local_cursor = local.cursor (MySQLdb.cursors.DictCursor)
local_cursor.execute ("SELECT * FROM my_table")

result_set_local = local_cursor.fetchall ()
for local_row in result_set_local:
  print str(local_row['russian'])

# -*- coding: koi8-r —*- - следует использовать для вывода результата в консоль.

Теги: python

Python. Curses

Поискав в инете инфу о curses в языке си и python — ничего толкового не нашел. Нашел только кривой мануал на офф сайте питона, да и тот тоже не особо ровный — прыжки с места на место. Решил как и всегда, написать свое объяснение curses «как для себя». Я попрежнему пишу на 2,6 версии.

Задача — вывести цветной текст в терминал.

Вот такое решение получаю.

#!/usr/local/bin/python

#Подключаем модуль curses, с которым, собственно, и работаем

import curses

#Подключаем модуль times, нужен только в конце скрипта для задержки на выход.
import time

#инициалищируем работу с экраном.
stdscr = curses.initscr()

# отключаем отображение курсора в терминале. см. описание ниже.
curses.curs_set(0)

#разрешаем работу с цветом.
curses.start_color()

#Объявляем, так называемую, палитру цветов.

#Палитра состоит из идентификационного номера, цвет текста, цвет фона

curses.init_pair(1, curses.COLOR_BLACK, curses.COLOR_WHITE)

# просто описанная переменная, хотел проверить вывод значений в следующей процедуре.

a = 1

# процедура выводит строку (и только строку). Строка начнется в координате x=10 и y=10 знакомест. Текст будет окрашен в палитру 1.
stdscr.addstr(10,10, str(a), curses.color_pair(1))

#Обновляем то, что написали.

stdscr.refresh()

#Делаем задержку перед выходом из программы "чтобы посмотреть"
time.sleep(3)

#Возвращаем стандартное отображение курсора.
curses.curs_set(1)

Доступные цвета:


# black 0
# red 1
# green 2
# yellow 3
# blue 4
# magenta 5
# cyan 6
# white 7

хотя даже в доке сказано, что лучше пользовать их через переменные модуля curses — curses.COLOR_BLACK или curses.COLOR_WHITE.

curses.curs_set(значение) - позваляет управлять отображением курсора ввода с клавиатуры в терминале. Можно использовать следующие значения:

0 — скрыть курсор.

1 — стандартный курсор.

2 — непрозрачный курсор.

 

Следует отметить, что если не вернуть стандартный курсор по окончании программы, то могут возникнуть некоторые трудности при работе в терминале (неотображаемый курсор или непрозрачный курсор).

 

Теги: python

Netflow. Flow_capture и flow_fanout как это настраивается.

Нужно было организовать сервер статистики посещения интернет ресурсов своими абонентами. Настроил mpd5 на отдачу статистики, статисика уходи на принимающий сервер, но дальше ничего не происходит. С толку сбил параметр для rc.conf — flow_fanout_remoteip. Этот параметр указывает на ip той машины, от которой нужно принимать статистику. В итоге конфиг выглядит так:

flow_capture_enable="YES"
flow_capture_localip="127.0.0.1"

#IP, на котором запущена flow_capture
flow_capture_remoteip="127.0.0.1"

#IP, от которого принимается flow-статистика. По умолчанию 0.0.0.0
flow_capture_port="9998"

#Порт на который принимается статистика
flow_capture_datadir="/usr/local/_dump/ng"

#Путь по которому будет сохраняться статистика
flow_capture_flags="-S60 -z9 -n95 -N0"
# Разные флаги (см. man)


flow_fanout_enable="YES"
#Включаем flow_fanout
flow_fanout_ip="10.10.254.1"
#Локальный ip для импорта
flow_fanout_remoteip="0.0.0.0"
#ip импортирующей машины. По умолчанию 0.0.0.0
flow_fanout_port="9996"
#Порт импортера
flow_fanout_export="127.0.0.1/127.0.0.1/9998 10.10.254.1/10.10.0.2/9997"
#Правила экспорта: < ip_source >/< ip_dest >/< port_dest >

 

Теги: flow

Восстановление пароля 3Com 4200 series

Восстановление пароля на 3Com серия 4200 происходит путем ввода логина и пароля как recover.

В итоге получается такая картина:

Login: recover
Password:

*** Password Recovery Mode ***
The administrative password will be cleared if a hard reset operation is
carried out on the device within 30 seconds.

If a hard reset operation is not carried out during this period, the device
will return to the CLI login prompt

countdown = 0
Login:

Теги: сетевое оборудование.

Закись азота

Куплю закись азота и гелий, чтобы сдохнуть со смеху.

Теги: юмор

Python + telnet

Привет всем.

Столкнулся с проблемой организации telnet из python'а. Казалось бы, что проще — подключил библиотеку telnetlib и пользуйся? Однако не все так просто. В примерах, которые приведены на сайтах разработчиков и официальном сайте, при вводе логина/пароля и передаче команд используется символ \n (якобы для эмулирования нажатия клавиши enter), однако этот пример не работает у меня и нужно использовать "\r». Поясню почему. В документации говорится, что "\n» - символ перехода на новую строку с внутренним кодом 0x0A, а "\r» - символ возврата каретки с внутренним кодом 0x0D. Получается, что устройства, к которым я пытался подключиться отлавливают именно 0x0D, а 0x0A просто добавляли вконец написанной строки. В итоге код получился таким:

 

#!/usr/bin/env python
import sys
import telnetlib
import time


tn = telnetlib.Telnet("10.10.0.1", 23) #подключаемся к узлу 

tn.read_until("Router >") # отлавливаем приглашение, которое заканчивается "Router >"
tn.write("enable\r") # вводим команду (Обратить внимание на \r)

tn.read_until("Password:") #отлавливаем приглашение с вводом пароля
tn.write("my_pass\r") # вставляем пароль (Обратить внимание на \r)

tn.read_until("telnet@BigIron Router#") #отлавливаем приглашение, информирующее о входе в систему
tn.write("show chassis\r") # выполняем команду
s = tn.read_until(" C degrees") # считываем результат до определенного слова

print type(s) #навсякий случай узнаем что мы получили, а то мало ли

tn.close(); #закрываем сессию
print s # выводим полученный результат.

 

В примере я не указываю ввод имени пользователя, но алгоритм тот же, что и для ввода пароля.

Теги: python

Python with SNMP

Пропарился полтора дня с попыткой свящать snmp и python'а.

Сначала пробовал PySNMP — не получилось. При запуске программы орет на пропущенные скобки, хотя все на месте.

Позже пробовал twistedsnmp — такая же проблема где-то пропущена закрывающаяся скобка и программа не запускается.

Отчаявшись — решил собрать библиотеку дла python'а из Net-snmp. При выполнении

python python.sh build
выдается более 20000 строк об ошибках и сообщение, что 'cc' имеет ошибки.

И тут, покапавшись в портах, нахожу программку с невзрачным названием yapsnmp (как позже оказалось это абривеатура). Установка прошла гладко. Но смутил пример автора для выполнения запроса:

yapsnmp.Session('router45-ny').walk('system')

Проблема была в следующем - т.к. у меня все мои девайсы используют разные версии snmp, то в примере автора не было указано ни версии протокола, ни комьюнити. Открыв доки - тоже не нашел ничего внятного, кроме того, что было в общих чертах указано что они могут быть. Попарился немного и о чудо!!! Программа заработала. Вот так все будет 100% работать:

import yapsnmp
print yapsnmp.Session('10.10.1.1', version=2, community='public').walk('ifOperStatus')
 

А вот, собственно, вывод:

(('ifOperStatus.1', 'up'), ('ifOperStatus.2', 'up'), ('ifOperStatus.3', 'down'), ('ifOperStatus.4', 'down'), ('ifOperStatus.5', 'down'), ('ifOperStatus.6', 'down'), ('ifOperStatus.7', 'down'), ('ifOperStatus.8', 'down'), ('ifOperStatus.9', 'down'), ('ifOperStatus.10', 'down'), ('ifOperStatus.11', 'down'), ('ifOperStatus.12', 'down'), ('ifOperStatus.13', 'down'), ('ifOperStatus.14', 'down'), ('ifOperStatus.15', 'down'), ('ifOperStatus.16', 'down'), ('ifOperStatus.17', 'down'), ('ifOperStatus.18', 'down'), ('ifOperStatus.19', 'down'), ('ifOperStatus.20', 'down'), ('ifOperStatus.21', 'down'), ('ifOperStatus.22', 'down'), ('ifOperStatus.23', 'down'), ('ifOperStatus.24', 'down'), ('ifOperStatus.25', 'down'), ('ifOperStatus.26', 'down'), ('ifOperStatus.27', 'down'), ('ifOperStatus.28', 'down'), ('ifOperStatus.29', 'down'), ('ifOperStatus.30', 'down'), ('ifOperStatus.31', 'down'), ('ifOperStatus.32', 'down'), ('ifOperStatus.33', 'down'), ('ifOperStatus.34', 'down'), ('ifOperStatus.35', 'down'), ('ifOperStatus.36', 'down'), ('ifOperStatus.37', 'down'), ('ifOperStatus.38', 'down'), ('ifOperStatus.39', 'down'), ('ifOperStatus.40', 'down'), ('ifOperStatus.41', 'down'), ('ifOperStatus.42', 'down'), ('ifOperStatus.43', 'down'), ('ifOperStatus.44', 'down'), ('ifOperStatus.45', 'down'), ('ifOperStatus.46', 'down'), ('ifOperStatus.47', 'down'), ('ifOperStatus.48', 'down'), ('ifOperStatus.49', 'up'), ('ifOperStatus.50', 'down'), ('ifOperStatus.51', 'down'), ('ifOperStatus.52', 'up'))

Думаю, что кому-то пригодится.

Теги: python

Python + MySQL (записки админа)

Привет всем.

В коем-то веке решил написать в блоге. 

Решил заняться изучением python'а. Пока делаю первые шаги, но изобразил уже выборку данных из БД MySQL:

#!/usr/bin/env python

import MySQLdb

 

ldb_host = "localhost";
ldb_user = "root";
ldb_pass = "root_pass";
ldb_name = "lan";

local_connect = MySQLdb.connect (ldb_host, ldb_user, ldb_pass, ldb_name)

local_cursor = local_connect.cursor (MySQLdb.cursors.DictCursor)
local_cursor.execute ("SELECT * FROM abonents where id=433")
local_result = local_cursor.fetchall ()

for row in local_result:

       print "%s " % (row["switch_model"])

local_cursor.close ()

local_connect.close ()

 

Теги: python

Как конвертировать файлы (глазами юзера).

Привет всем.
Работаю с компами больше 6 лет, с юзерами примерно столько же.
Я не спорю были приколы типа «А куда делась панель», или «каким пальцем нажать левую кнопку мыши».
То, что произошло сегодня убило мой мозг, высушило его и выкурило.

Задача: Скинуть на телефон видео-файл в формате mp4.
Решение: один человек нашел быстрый способ решить проблему — взял файл с расширением.flv, снес расширение, вписал mp4, а потом заявляет.
«И че ты мне врешь? О_о он не скидываеццо!»

Я чуть под стол не упал. Пришлось заставить выкачивать конвертор, на что получил не менее веский аргумент, что 6 Мб это много.

Я в шоке.

черная молния

Сегодня посмотрел фильм Черная молния.
Несмотря  на траву, которую курил сценарист с Бекмамбетовым, фильм получился довольно жизненным.

В прочем, как и все дозоры.

Теги: фильмы

Программное обеспечение

Сегодня знакомый админ сказал, что его друг пишет программу: «Система мониторинга захоронений»… для кладбища.

Не спорю — нужная прога, на вслушайтесь только в название.

 

На работе.

Начались проблемы с сервером доступа.

Принимаю меры.

 

Посмотрел клип рамштайна pussy.

Теперь я понял за что его запретили.

Немцы ничего не стесняются.

Дума…

Вот сижу и думаю.
А ведь блог заводил для себя, чтобы использовать как записную книжку.
А в итоге ни одной записи по теме…

Всем привет

Всем снова привет.
Давно меня тут не было.
Столько всего произошло, тут описывать — времени не хватит.

Купил себе ноут. радовался как ребенок. :)

Текст песни: «Остатки сна».

Погуглив даже по словам текста — не нашел.

Решил написать.

Песню, как написанно в имени файла, исполняет 7Б и А. Васильев. Хотя ни одного, ни другого исполнителя я не ощущаю.

 

Остатки сна.

Куплет 1:

Где-то в городе полным шорохов

Кто искал любовь, кто решил забыть

Кто с обманутой навсегда душой

Кто с улыбкою незнакомою чужой

Припев:

Лишь уходя, в мыслях моих

Обманутые вовсе желания твои

Обрывки дней, остатки сна

С обманутой душою быть может…

Куплет 2:

Где-то в городе, полным похоти

По течению, что не переплыть

Кто найдет любовь, обретя печаль

Кто забытый вновь не сумел молчать

Припев:

Лишь уходя, в мыслях моих

Обманутые вовсе желания твои

Обрывки дней, остатки сна

С обманутой душою быть может… навсегда.

 

Теги: остатки сна.

Это пока моя первая запись в блоге. Думаю мой блог будет развиваться.

Вот и как многие пользователи завел свой собственный блог.

Надеюсь, что не заброшу….