понедельник, 13 декабря 2010 г.

Загрузить IOS через tftp из ROMMOM на cisco

rommon 1 > set IP_ADDRESS=10.10.10.1
rommon 2 > set IP_SUBNET_MASK=255.255.255.0
rommon 3 > set DEFAULT_GATEWAY=10.10.10.10
rommon 4 > set TFTP_SERVER=10.10.10.10
rommon 5 > set TFTP_FILE=ios.bin
rommon 6 > sync

Запускаем закачку иоса:

rommon 7 > tftpdnld

Загружаемся:

rommon 8 > boot

http://itmemos.blogspot.com

пятница, 5 ноября 2010 г.

Одно-строчные скрипты SED

Это перевод статьи http://sed.sourceforge.net/sed1line.txt
Версия 5.5 от 29 Дек. 2005
Составлено: Eric Pement (pemente@northpark.edu)
Переведено: Anton Tarasov aka Ant0 (mailbox@ant0.ru)
Быстрый переход:

Пространство между строками:

  • Двойное пространство между строками:
    • sed G
  • Двойное пространство между строками исключая пустые строки (на выходе содержатся не больше одной пустой строки между двумя строками с текстом):
    • sed '/^$/d;G'
  • Тройное пространство между строками:
    • sed 'G;G'
  • Удалить каждую вторую строку:
    • sed 'n;d'
  • Вставить пустую строку перед каждой строкой соответствующей регулярному выражению "regex":
    • sed '/regex/{x;p;x;}'
  • Вставить пустую строку после каждой строки соответствующей регулярному выражению "regex":
    • sed '/regex/G'
  • Вставить пустую строку перед и после каждой строки соответствующей регулярному выражению "regex":
    • sed '/regex/{x;p;x;G;}'

Нумерация:

  • Нумерация каждой стоки в файле filename. Используя отступ (tab) (смотрите примечание по '\t' в конце документа) вместо пустой строки:
    • sed = filename | sed 'N;s/\n/\t/'
  • Нумерация каждой строки в файле filename (номер слева, выравненый по правому краю):
    • sed = filename | sed 'N; s/^/ /; s/ *\(.\{6,\}\)\n/\1 /'
  • Нумерация каждой строки в файле filename, с выводом номера только для не пустых строк:
    • sed '/./=' filename | sed '/./N; s/\n/ /'
  • Подсчет строк (эмуляция "wc -l"):
    • sed -n '$='

Преобразование и замена текста:

  • В UNIX окружении: преобразование окончания строк из формата DOS (CR/LF) в формат Unix (LF):
    • sed 's/.$//' (подразумевается что все строки заканчиваются с CR/LF)
    • sed 's/^M$//' (в bash/tcsh, нажмите Ctrl-V затем Ctrl-M)
    • sed 's/\x0D$//' (работает в ssed, gsed 3.02.80 или выше)
  • В UNIX окружении: преобразование разрыва строк Unix (LF) в формат DOS:
    • sed "s/$/`echo -e \\\r`/" (команда в ksh)
    • sed 's/$'"/`echo \\\r`/" (команда под bash)
    • sed "s/$/`echo \\\r`/" (команда под zsh)
    • sed 's/$/\r/' (команда под gsed 3.02.80 или выше)
  • В DOS окружении: преобразование разрыва строк Unix (LF) в формат DOS:
    • Версия 1: sed "s/$//"
    • Версия 2: sed -n p
  • В DOS окружении: преобразование разрыва строк DOS (CR/LF) в формат Unix. Работоет только с sed версии 4.0.7 или выше. Версию в Unix окружении можно узнать, вызвав SED с параметром "--version". В версии ниже, в DOS окружении такой фокус не пройдет. Использвйте взамен комманду "tr":
    • sed "s/\r//" infile >outfile (sed v4.0.7 или выше)
    • tr -d \r <infile >outfile (GNU tr версии 1.22 или выше)
  • Удалить все пробелы и символы табуляции в начале каждой строки файла (смотрите примечание по табуляции в конце документа):
    • sed 's/^[ \t]*//'
  • Удалить все пробелы и символы табуляции в конце каждой строки файла (смотрите примечание по табуляции в конце документа):
    • sed 's/[ \t]*$//'
  • Удалить все пробелы и символы табуляции в начале и конце каждой строки файла (смотрите примечание по табуляции в конце документа):
    • sed 's/^[ \t]*//;s/[ \t]*$//'
  • Вставить 5 пробелов в начале каждой строки (создать смещение страницы):
    • sed 's/^/ /'
  • Расположить весь текст по правому краю столбца шириной в 79 символов:
    • sed -e :a -e 's/^.\{1,78\}$/ &/;ta' (устанавливает как 78 плюс 1 пробельный символ)
  • Центрировать весь текст посередине столбца шириной 79 символов. В версии 1, пробелы добовляются в начало и конец строки. В версии 2, пробелы добовляются только в начало строки:
    • Версия 1: sed -e :a -e 's/^.\{1,77\}$/ & /;ta'
    • Версия 2: sed -e :a -e 's/^.\{1,77\}$/ &/;ta' -e 's/\( *\)\1/\1/'
  • Поиск и замеа "foo" на "bar" в каждой строке:
    • sed 's/foo/bar/' (замена только первого совпадения в строке)
    • sed 's/foo/bar/4' (замена первых 4рех совпадений в строке)
    • sed 's/foo/bar/g' (замена ВСЕХ совпадений в строке)
    • sed 's/\(.*\)foo\(.*foo\)/\1bar\2/' (замена предпоследнего совпадения)
    • sed 's/\(.*\)foo/\1bar/' (замена только последнего совпадения)
  • Замена "foo" на "bar" ТОЛЬКО для строк содержащих "baz":
    • sed '/baz/s/foo/bar/g'
  • Замена "foo" на "bar" ИСКЛЮЧАЯ строки содержащие "baz":
    • sed '/baz/!s/foo/bar/g'
  • Замена "scarlet" или "ruby", или "puce" на "red":
    • sed 's/scarlet/red/g;s/ruby/red/g;s/puce/red/g' (большинство sed-ов)
    • gsed 's/scarlet\|ruby\|puce/red/g' (только GNU sed)
  • Перевернуть последовательность строк (эмуляция "tac") (ошибка/особеннось в HHsed v1.5 причина удалению пустой строки):
    • Версия 1: sed '1!G;h;$!d'
    • Версия 2: sed -n '1!G;h;$p'
  • Перевернуть каждую строку в файле задом наперед (эмуляция "rev"):
    • sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'
  • Соеденить каждую пару строк бок о бок (подобно "paste"):
    • sed '$!N;s/\n/ /'
  • Если линия заканчивается обратной косой чертой "\", то присоеденить следующую линию:
    • sed -e :a -e '/\\$/N; s/\\\n//; ta'
  • Если линия начинается с знака "=", то присоеденить ее к предыдущей линии и заменить "=" пробелом:
    • sed -e :a -e '$!N;s/\n=/ /;ta' -e 'P;D'
  • Добавить запятые к строке из чисел, изменяя "1234567" на "1,234,567":
    • gsed ':a;s/\B[0-9]\{3\}\>/,&/;ta' (GNU sed)
    • sed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta' (другие sed-ы)
  • Добавить запятые к числу с десятичной частью и знаком минуса (GNU sed):
    • gsed -r ':a;s/(^|[^0-9.])([0-9]+)([0-9]{3})/\1\2,\3/g;ta'
  • Добавить пустую строку через каждые 5 строк (после строк 5, 10, 15, 20, и т.д.):
    • gsed '0~5G' (только GNU sed)
    • sed 'n;n;n;n;G;' (другие sed-ы)

Выборочная печать некоторых строк:

  • Печатать первые 10 линий файла (эмуляция "head"):
    • sed 10q
  • Печатать первую строку файла (эмуляция "head -1"):
    • sed q
  • Печатать последние 10 строк файла (эмуляция "tail"):
    • sed -e :a -e '$q;N;11,$D;ba'
  • Печатать последние 2 строки файла (эмуляция "tail -2"):
    • sed '$!N;$!D'
  • Печатать последнюю строку файла (эмуляция "tail -1"):
    • Версия 1: sed '$!d'
    • Версия 2: sed -n '$p'
  • Печатать предпоследнюю строку в файле:
    • sed -e '$!{h;d;}' -e x (для однострочного файла печатать пустую строку)
    • sed -e '1{$q;}' -e '$!{h;d;}' -e x (для однострочного файла печатать эту строку)
    • sed -e '1{$d;}' -e '$!{h;d;}' -e x (для однострочного файла ничего не печатать)
  • Печатать только те строки, которые совпадают с регулярным выражением (эмуляция "grep"):
    • Версия 1: sed -n '/regexp/p'
    • Версия 2: sed '/regexp/!d'
  • Печатать только те строки, которые НЕ совпадают с регулярным выражением (эмуляция "grep -v"):
    • sed -n '/regexp/!p' - Версия 1, corresponds to above
    • sed '/regexp/d' - Версия 2, simpler syntax
  • Печатать строку непосредственно перед регулярным выражением, но не печатать строку содержащую регулярное выражение:
    • sed -n '/regexp/{g;1!p;};h'
  • Печатать строку непосредственно после регулярного выражения, но не печатать строку содержащую регулярное выражение:
    • sed -n '/regexp/{n;p;}'
  • Печатать по одной строке перед и после регулярного выражения, с указанием номера строки совпадающей с регулярным выражением (симуляция "grep -A1 -B1"):
    • sed -n -e '/regexp/{=;x;1!p;g;$!N;p;D;}' -e h
  • Печать строк, совпадающих с регулярными выражениями AAA, BBB и CCC одновременно (в любой последовательности):
    • sed '/AAA/!d; /BBB/!d; /CCC/!d'
  • Печать строк, совпадающих с регулярными выражениями AAA, BBB и CCC одновременно (в конкретной последовательности):
    • sed '/AAA.*BBB.*CCC/!d'
  • Печать строк, совпадающих с любым регулярным выражением AAA или BBB, или CCC (эмуляция "egrep"):
    • sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d (большинство sed'ов)
    • gsed '/AAA\|BBB\|CCC/!d' (только GNU sed)
  • Печатать абзац если он содержит AAA (пустая строка разделяет абзацы) (в HHsed v1.5 необходимо вставить 'G;' после 'x;'):
    • sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;'
  • Печатать абзац если он содержит AAA, BBB и CCC (в любой последовательности) (в HHsed v1.5 необходимо вставить 'G;' после 'x;'):
    • sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;/BBB/!d;/CCC/!d'
  • Печатать абзац если он содержит AAA или BBB, или CCC (в HHsed v1.5 необходимо вставить 'G;' после 'x;'):
    • sed -e '/./{H;$!d;}' -e 'x;/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d
    • gsed '/./{H;$!d;};x;/AAA\|BBB\|CCC/b;d' (только GNU sed)
  • Печатать строки длиной равной или большей 65 символов:
    • sed -n '/^.\{65\}/p'
  • Печатать строки длиной меньше или равной 65 символов:
    • sed -n '/^.\{65\}/!p' - Версия 1, отвечает условию
    • sed '/^.\{65\}/d' - Версия 2, более простой синтаксис
  • Печатать часть файла начиная от совпадения с регулярным выражением и до конца файла:
    • sed -n '/regexp/,$p'
  • Печатать часть файла основываясь на номерах строк (строки 8-12, включительно):
    • Версия 1: sed -n '8,12p'
    • Версия 2: sed '8,12!d'
  • Печатать строку под номером 52:
    • sed -n '52p' - Версия 1
    • sed '52!d' - Версия 2
    • sed '52q;d' - Версия 3, эффективен на больших файлах
  • Начиная с 3ей строки печатать каждую седьмую строку в файле:
    • gsed -n '3~7p' (только GNU sed)
    • sed -n '3,${p;n;n;n;n;n;n;}' (другие sed-ы)
  • Печатать часть файла между двумя регулярными выражениями (включительно):
    • sed -n '/Iowa/,/Montana/p' (регистро зависимый)

Избирательное удаление определенных строк:

  • Печатать все линии ИСКЛЮЧАЯ часть между двумя регулярными выражениями:
    • sed '/Iowa/,/Montana/d'
  • Удалить дубликаты последовательных строк в файле (эмуляция "uniq"). Первая строка в наборе дубликатах строк удерживается от удаления:
    • sed '$!N; /^\(.*\)\n\1$/!P; D'
  • Удалить дубликаты непоследовательных строк в файле. Остерегайтесь переполнения буфера или используйте GNU sed:
    • sed -n 'G; s/\n/&&/; /^\([ -~]*\n\).*\n\1/d; s/\n//; h; P'
  • Печатать только дубликаты строк (эмуляция "uniq -d"):
    • sed '$!N; s/^\(.*\)\n\1$/\1/; t; D'
  • Удалить первые 10 строк в файле:
    • sed '1,10d'
  • Удалить последнюю строку в файле:
    • sed '$d'
  • Удалить 2 последние строки файла:
    • sed 'N;$!P;$!D;$d'
  • Удалить последние 10 строк файла:
    • Версия 1: sed -e :a -e '$d;N;2,10ba' -e 'P;D'
    • Версия 2: sed -n -e :a -e '1,10!{P;N;D;};N;ba'
  • Удалить каждую восьмую строку в файле:
    • gsed '0~8d' (только GNU sed)
    • sed 'n;n;n;n;n;n;n;d;' (другие sed-ы)
  • Удалить строки совпадающие с регулярным выражением:
    • sed '/pattern/d'
  • Удалить ВСЕ пустрые строки из файла (эмуляция "grep '.' "):
    • Версия 1: sed '/^$/d'
    • Версия 2: sed '/./!d'
  • Удалить все последовательности пустых строк из файла исключая первую. Также удалить все пустые строки в начале и в конце файла (эмуляция "cat -s"):
    • sed '/./,/^$/!d' (Версия 1, допускается 0 пустых строк в начале и 1 в конце файла)
    • sed '/^$/N;/\n$/D' (Версия 2, допускается 1 пустая строка в начале и 0 в конце файла)
  • Оставить последовательность пустых строк не более двух одновременно:
    • sed '/^$/N;/\n$/N;//D'
  • Удалить все пустые строки в начале файла:
    • sed '/./,$!d'
  • Удалить все пустые строки в конце файла:
    • sed -e :a -e '/^\n*$/{$d;N;ba' -e '}' (для всех sed-ов)
    • sed -e :a -e '/^\n*$/N;/\n$/ba' (для всех, кроме gsed 3.02.*)
  • Удалить последнюю непустую строку в каждом абзаце:
    • sed -n '/^$/{p;h;};/./{x;/./p;}'

Специальные приложения:

  • Получить заголовок Usenet/e-mail сообщения:
    • sed '/^$/q' (удаляет все после первой пустой строки)
  • Получить тело Usenet/e-mail сообщений:
    • sed '1,/^$/d' (удаляет все до первой пустой строки)
  • Получить заголовок Subject (тема Usenet/e-mail сообщения), без удаления части "Subject: ":
    • sed '/^Subject: */!d; s///;q'
  • Получить заголовок обратный адрес:
    • sed '/^Reply-To:/q; /^From:/h; /./d;g;q'
  • Анализировать правильный исходящий адрес. # Pulls out the e-mail address by itself from the 1-line return address header (see preceding script):
    • sed 's/ *(.*)//; s/>.*//; s/.*[:<] *//'
  • Добавить скобку и пробел в начало каждой строки (цитирование сообщения):
    • sed 's/^/> /'
  • Удалить скобку и пробел в начале каждой строки (unquote a message):
    • sed 's/^> //'
  • Удалить большинство HTML тегов (включая теги состоящие из несколько строк):
    • sed -e :a -e 's/<[^>]*>//g;/</N;//ba'
  • Извлечение закодированных (uuencoded) двоичных данных из нескольких частей, удаление внешней заголовочной информации. Итак это только часть закодированного остатка. Файлы пропущенные через sed должны быть пропущены в правильной последовательности. Версия 1 может быть введена из командной строки, версия 2 может быть встроена в исполняемый скрипт оболочки Unix. (Модифицированна из скрипта Rahul Dhesi):
    • Версия 1: sed '/^end/,/^begin/d' file1 file2 ... fileX | uudecode
    • Версия 2: sed '/^end/,/^begin/d' "$@" | uudecode
  • Отсортировать абзацы файла в алфавитном порядке. Абзацы разделены пустой строкой. GNU sed использует \v для вертикального выравнивания, или это может быть любой уникальный символ:
    • sed '/./{H;d;};x;s/\n/={NL}=/g' file | sort | sed '1s/={NL}=//;s/={NL}=/\n/g'
    • gsed '/./{H;d};x;y/\n/\v/' file | sort | sed '1s/\v//;y/\v/\n/'
  • Удалить конкретный символ (к примеру: символ возврата) из man страницы. Для использования команды 'echo' может потребоваться указать параметр -e (если вы используете Unix System V или оболочку bash):
    • sed "s/.`echo \\\b`//g" (двойные кавычки необходимы в Unix окружении)
    • sed 's/.^H//g' (в bash/tcsh, нажмите Ctrl-V и затем Ctrl-H)
    • sed 's/.\x08//g' (hex выражение для sed 1.5, GNU sed, ssed)
  • В DOS окружении: создаем коммандный файл, который запаковывает каждый txt-файл в каталоге (в две команды):
    • echo @echo off >zipup.bat
    • dir /b *.txt | sed "s/^\(.*\)\.TXT/pkzip -mo \1 \1.TXT/" >>zipup.bat

Типичное использование:

sed берет одну или более команд редактирования и в результате примеяет их все к каждой входящей строке. После этого все команды будут применены к первой входящей строке, эта строка выводится, а следующая входящая строка берется для обработки и цикл повтаряется.
Предшествующий пример предполагает что данные поступают с устройства стандартного ввода (например, консоль - стандартный канал ввода). Один или больше имен файлом могут быть присоеденены к командной строке если вход идет не из stdin. Вывод отсылается на стандартный вывод (stdout - обычно экран).
Так:
  • cat filename | sed '10q' (используется ввод из конвеера)
  • sed '10q' filename (тот же эффект, исключая использование "cat")
  • sed '10q' filename > newfile (перенаправление вывода в файл)
Для дополнительных синтаксических инструкций, включая метод применения команд редактирования из файла, взамен командной строки, посмотрите книги Dale Dougherty и Arnold Robbins "sed & awk, 2nd Edition," (O'Reilly, 1997; http://www.ora.com), "UNIX Text Processing," by Dale Dougherty и Tim O'Reilly (Hayden Books, 1987) или учебники Mike Arst distributed in U-SEDIT2.ZIP (many sites).
Для использование всех возможностей sed-а вы должны понимать "регулярные выражения". Для этого смотрите "Mastering Regular Expressions" by Jeffrey Friedl (O'Reilly, 1997).
Могут пригодиться страницы руководства ("man") в системе Unix (Используйте "man sed", "man regexp", или раздел по регулярным выраженям в "man sed"), но страницы руководства, как правило, трудны. Они не написаны для обучения пользователей использования sed-а или регулярных выражений с нуля, а написаны как справочник для тех кто уже умеет работать с этими инструментами.

Цитирование правил (Quoting syntax):

Предшествующий пример использует одинарные кавычки ('...') вместо двойных кавычек ("...") для окружения редактируемой команды, с тех пор как sed в основном исользуется на платформах Unix. Одинарные кавычки предотращают оболочку Unix от интерпретации знака доллара ($) и обратных кавычек (`...`), которые расширяют оболочку если они заключены в двойные кавычки. Пользователи "csh" shell и происходящие от нее оболочки, также нуждаются в взятие в кавычки знака восклицания (!). С обратной косой чертой (\!) правильно запускает пример указанные выше, даже внутри одинарных кавычек.
Версии sed написанные для DOS обязательно требуют заключение редактируемых команд в двойные кавычки ("...") взамен одинарных.

Исользование '\t' в скриптах SED:

Для ясности документации, мы можем использовать выражение '\t' для обозначения символа табуляции (0x09) в скриптах.
Однако большинство версий sed-а не понимают сокращение '\t', чтобы ввести этот символ из командной строки, введите его клавишей "TAB".
'\t' поддерживается как метасимвол регулярнго выражения в awk, perl, HHsed, sedmod, и GNU sed v3.02.80.

Версии sed:

Разные версии sed-а, различаются незначителными переменами. Большинство версий не поддерживает меток (:name) или ветвление инструкций (b,t) внутри команд редактирования. Хотя поддерживают их в конце команд. Желательно использовать синтаксис исключая метки и ветвления инструкций, несмотря на популярность GNU версии sed-а, позволяющий более краткий и красивый синтаксис.
Когда читатель смотрит GNU версию sed-а, поддерживающего боле лаконичный синтаксис и видит такую длинную команду, как эту:
  • sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d
это подбивает к изученю GNU версию sed-а, для укорачивания команды:
  • sed '/AAA/b;/BBB/b;/CCC/b;d'
  • sed '/AAA\|BBB\|CCC/b;d'
В дополнение запомните: многие версии sed-а принимают команду, типа "/one/ s/RE1/RE2/", но не принимают типа "/one/! s/RE1/RE2/" - содержащую пробел перед "s".

Оптимизация по скорости:

Для необходимого ускорения выполнения программы (к примеру на больший файлах, медленном процессоре или медленном носителе), замена будет более быстрой если искомое условие будет продублированно перед инструкцией "s/.../.../". Пример:
  • sed 's/foo/bar/g' filename (стандартная команда замены)
  • sed '/foo/ s/foo/bar/g' filename (выполняется быстрее)
  • sed '/foo/ s//bar/g' filename (укороченный синтаксис предыдущей команды)
В однострочном выводе на печать или удалении строк (при неполной обработке файла), используйте команду выхода "quit" (q) в скрипте - это резко сократит время обработки больших файлов. Пример:
  • sed -n '45,50p' filename (вывести на печатать линии с 45 по 50)
  • sed -n '51q;45,50p' filename (тоже самое, но работает быстрее)
Если Вы хотите добавить свой скрипт или нашли ошибку в этом документе, пожалуйста отправьте e-mail составителю. Также укажите составителю используемую Вами версию sed-а, операционную систему составителю и обозначьте проблему. Чтобы охарактеризовать скрипт как одно-строковый, команда должна содержать не больше 65 символов.

Параметры (скорость ) ADSL

C2811#show atm pvc

C2811#show atm interface ATM 0/0/0

C2811#show interfaces ATM 0/0/0 
 
C2811#show dsl interface ATM 0/0/0
 
ATU-C( R ) - ADSL Transmission Unit - (Central и Remote), 
а ( U )DS - UpStream и DownStream (стобцы подписаны).
      
  1. On the router, issue terminal monitor and debug atm event commands.
    Router#terminal monitor
    Router#debug atm event
    ATM events debugging is on
    
    
  2. Physically unplug the ADSL Cable (RJ-11) from the Cisco SOHO77 ADSL interface. Wait for a few seconds. Plug the cable back in to cause the ADSL line to retrain.
    If you have access to the digital subscriber line access multiplexer (DSLAM), make the line retrain by shutting down the specific ADSL Terminating Unit - Central Office (ATU-C) interface where the subscriber terminates the DSL connection.
    Note: If you issue the shut and no shut commands on the router, they do not retrain the ADSL line. Even when you administratively shut down the ATM interface, the Carrier Detect (CD) light and the ATU-C port LED are still on. This means that it is still trained up. Unplug and plug back in the ADSL line to make the interface retrain.
  3. Watch the debug messages on the screen.
    If the modem state stays at "0x8" and says "Could not establish connection," it means that the Cisco SOHO77 has not heard from the central office (CO) . It does not see an incoming signal.
    Router# 
    1d01h: DSL: 1: Modem state = 0x8
    1d01h: DSL: 2: Modem state = 0x8
    1d01h: DSL: 3: Modem state = 0x8
    1d01h: DSL: 4: Modem state = 0x8
    1d01h: DSL: 5: Modem state = 0x8
    1d01h: DSL: Could not establish connection
    <... snipped ...>
    If the modem state changes from "0x8" to "SHOWTIME," it means that the Cisco SOHO77 has successfully trained with the DSLAM.
    Router#
    00:24:18: DSL: 2: Modem state = 0x8
    00:24:21: DSL: 3: Modem state = 0x8
    00:24:23: DSL: 4: Modem state = 0x8
    00:24:26: DSL: 5: Modem state = 0x8
    00:24:28: DSL: 6: Modem state = 0x10
    00:24:31: DSL: 7: Modem state = 0x10
    00:24:33: DSL: 8: Modem state = 0x10
    00:24:36: DSL: 9: Modem state = 0x10
    00:24:37: DSL: Received response: 0x24
    00:24:37: DSL: Showtime!
    <... snipped ...>
  4. After viewing the debugs, if you do not want to see any more modem state messages, at the router prompt issue the undebug all command. All debugging is turned off.
Router#undebug all

вторник, 26 октября 2010 г.

+CMGS Send message
+CMSS Send message from storage
+CMGW Write message to memory
+CMGD Delete message
+CMGC Send command
+CMMS More messages to send


To send SMS’s you need to put the device in “Text” mode. This is done by sending the following command:
AT+CMGF=1 # Puts the mode in text mode
To send an SMS do the following:
AT+CMGS=”+35386827XXXX”
> 3G Rocks!!!!
CTRL-Z
When you type in the line with the phone number the “>” will come up automatically. Type in your message and when you are finished type in CTRLZ (as in ctrl key and z at the same time).
Good so far? But how about incoming messages. Have no fear, DBTR is here!!!
AT+CMGL=”all” #To get a list of SMS’s type in :
AT+CMGR=0 #get an individual message
AT+CMGD=n #Delete a message where n is the number returned by the list above.
There are quite a few other commands that the Huawei understands. I’ll post them later.
To hangup just do CTRLA x.

-----------------

AT
OK
AT+CMGF=1
OK
AT+CMGW="+85291234567"
> A simple demo of SMS text messaging.
+CMGW: 1

OK
AT+CMSS=1
+CMSS: 20

OK


------------------------

Sending SMS

First of all, the simplest option is to put the device into text mode. This is done with the following command:
 
chat TIMEOUT 1 "" "AT+CMGF=1" "OK" > /dev/tts/USB2

The terminal on which you are running cat should come back wtih the result:

AT+CMGF=1
OK


If it doesn’t, then either you are not watching the correct device, or your USB dongle’s firmware does not support SMS.
The next step is to tell the modem what number to send the text message to. Note the escaped quotes in the following command. When nesting similar quotes in such a manner, we must tell the terminal to treat the inner quotes as plain text to avoid the command trying to process them as part of the command line. Replace the xxxxxxxxxxx with the telephone number you wish to send the SMS to.
 
chat TIMEOUT 1 "" "AT+CMGS=\"xxxxxxxxxxx\"" "OK" > /dev/tts/USB2

On your second terminal, you should see the response:

AT+CMGS="xxxxxxxxxxx"
>


This is a prompt to enter the SMS’s text in plaintext format. The command is simply:

chat TIMEOUT 1 "" "Message text goes here" "OK" > /dev/tts/USB2

To insert a new line of text, just repeat this command.
To finalise the message, normally you would press . To emulate this, we use the ^ character. This will cause the terminal to treat it as if you have pressed the CTRL key followed by the next character. The command reads as follows:

chat TIMEOUT 1 "" "^Z" "OK" > /dev/tts/USB2

After a couple of seconds, your watching terminal should respond with:
+CMGS: n
n will be a number corresponding to the number of sent messages from the device.
You should now have the text message arrive at the destination telephone number.
Simples.

Receiving SMS

First step, as with sending SMS, is to put the device into text mode. This is exactly the same command used before:

chat TIMEOUT 1 "" "AT+CMGF=1" "OK" > /dev/tts/USB2

As an optional step, you can list all of the SMS stored on the SIM like so:
chat TIMEOUT 1 "" "AT+CMGL" "OK" > /dev/tts/USB2
The only real requirement for reading SMS, however, is to choose the index number of the SMS you wish to read. This is done with this command:

chat TIMEOUT 1 "" "AT+CMGR=n" "OK" > /dev/tts/USB2

In order to delete a SMS, should you so wish, it is done via a very similar command:

chat TIMEOUT 1 "" "AT+CMGD=n" "OK" > /dev/tts/USB2

That’s all I’m gonna talk you through, but there are countless resources online for finding out what some other AT commands are, and it’s quite interesting just firing them at the device to see what the response is, and I encourage you to have a mess about… Be careful when messing around with the SIM PIN codes, though, and it’s not my fault if you lock yourself out of your kit!
Hope I’ve been of use!
As always… Any questions/mistakes I’ve made, just leave a comment.
n00b



понедельник, 18 октября 2010 г.

Команда nice

Команда nice запускает программу с изменённым приоритетом для планироващика задач. Слово «nice» в английском языке обозначает, в частности, «вежливый». По этимологии этой команды процесс с большим значением nice — более вежлив к другим процессам, позволяя им использовать больше процессорного времени, поскольку он сам имеет меньший приоритет (и, следовательно, большее «значение вежливости» — niceness value).

Наибольший приоритет (и наименьшее значение nice) — −20. 19, либо 20 — наименьший приоритет, но это, с другой стороны, самые вежливые процессы.

Чтобы посмотреть идентификатор и значение nice нужного процесса в системе, можно воспользоваться командой ps axl.

Пример использования команды nice — запуск ресурсоёмкой задачи в фоновом режиме, так, чтобы она выполнялась, но освобождала часть процессорного времени для других процессов, как только оно становятся им нужно. Таким образом можно, скажем, запустить кодирование OGG/MP3 с большим значением nice, чтобы оно происходило в фоновом режиме, используя не всё процессорное время, а то, что не используется другими процессами (с меньшим значением nice — то есть с большим приоритетом).

Чтобы запустить команду с определённым приоритетом, слева нужно добавить «nice -n значение_nice», либо «nice --adjustment значение_nice» (adjustment — настройка, регулировка).

То есть: nice -n значение_nice команда.

Если нужно изменить приоритет уже запущенного процесса, можно воспользоваться командой renice.

renice -n значение_nice id_процесса

Команда renice выводит старый и новый приоритет процесса.