• Авторизация


cl_cross 17-02-2015 13:07 к комментариям - к полной версии - понравилось!


http://www.youtube.com/watch?v=0m2FhfnupHs azimova natalia anatolievna 07.01.1977
iperf –c 192.168.5.39 –t 120 –u –p 49001
iperf –s –u –p 49001
sotnik lubov aleksand +79180553138
+79183670614
grep -iE '21 (0[6789]|1[12])'
40220109404 mtstv
nmap -sP 10.168.48.1-254
nmap -sP 10.168.48.0/24
for i in {1..254};do ping -c1 -W1 10.168.48.$i | grep 'frome';done
http://chaos.sgu.ru/cyr/KOI/book/sed-asu.htm
1c uzes2v3d0x5
Пространство между строками:
##Двойное пространство между строками: ##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 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;//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 (тоже самое, но работает быстрее)

одними ЗАГЛАВНЫМИ буквами. Чтобы исключить из поиска случайные попадания аббревиатур, будем искать слова из пяти и более символов
$ grep -w “[A-Z]\\+\\{5,\\}” channel.log
grep -ve «^#\\|^[[:space:]]*$» file_name
grep -iE \"'mail (3[0-9]|4[0-9]|5[0-1])'\" file_name #diapazon simvolov
Сказано ж... PSTools Марка Русиновича...
пример из описания:
PsExec - позволяет выполнить приложение на локальном и удаленном компьютере. Естественно, при наличии соответствующих прав доступа. Ключи командной строки, используемые для PSехес, характерны и для других утилит пакета, поэтому будут рассмотрены подробно.
Использование:
psехес [\\\\computer[,computer2[,...] | @file][-u user [-p psswd]][-s|-e][-i][-c [-f|-v]][-w directory][-d][-][-a n,n,...] cmd [arguments]
computer - имя или IP-адрес компьютера. Если пропущено - то приложение запускается на локальном компьютере. Если используется шаблон (\\\\*), PsExec выполнит приложение на всех компьютерах текущего домена.
@file - имя файла со списком компьютеров для выполнения.
-u - имя пользователя. Если опущено - то будет использовано имя текущего пользователя.
-p - пароль. Если опущен, то будет запрошен программой.
-s - выполнить приложение с локальными системными правами (Local system account).
-e - использовать указанный профиль пользователя.
-i - разрешить удаленной программе взаимодействовать с рабочим столом на удаленном компьютере. Если ключ не задан, то выполнение удаленной программы происходит незаметно для пользователя удаленного компьютера.
-c - копировать указанную программу на удаленный компьютер перед выполнением. Если ключ опущен, то программа для выполнения должна присутствовать на удаленном компьютере в путях поиска, задаваемых переменной окружения path.
-f - выполнять копирование даже при наличии исполняемого файла на удаленном компьютере.
-v - выполнять копирование только в случае, если исполняемый файл имеет более позднюю версию.
-d - не ждать завершения удаленного процесса.
-w - установить рабочий каталог для удаленного процесса.
-priority - приоритет для удаленного процесса. Может принимать значения (в порядке возрастания) -low, -belownormal, -abovenormal, -high, -realtime.
-a - указание процессоров (для мультипроцессорных систем) на котором будет выполняться приложение. Например - для CPU 1, CPU 4, ключ: \"-a 1,4\"
program - имя приложения для выполнения на удаленной системе.
arguments - аргументы для удаленного приложеня. Пути файлов должны задаваться относительно удаленного компьютера и имена файлов или каталогов, содержащие пробелы должны заключаться в двойные кавычки, например - \"C:\\Program Files\\User Folder\\Programm.exe\"
17


Programmer
17 - 06.09.06 - 09:17

(16) спасибо, буду пробовать.


Programmer
18 - 06.09.06 - 09:26


Плохо, что программка PSехес описание ошибки выводит в неизвестной кодировке - ничего не понятно :(
Вот, например, запускаю такой строкой:
psехес \\\\usercomp -u MyUserName -p MyUserPwd -e -i \"\\\\myserver\\myshare\\myproga.exe\"


Psexec -accepteula -e \\\\Remote-MachineName -u DOMAIN\\userid -p password wscript.exe
@echo off
cscript script.vbs
exit
runas /noprofile /user:admin@domain.local \"notepad\"
1
psexec \\\\192.168.1.2 -u Имя_пользователя -p ПАРОЛЬ \"Taskkill /f /t /im proga.exe\" 2>>psexec.log

Код Visual Basic
1
2
3
4
5
WScript.Sleep 60000*3
Set WshShell = WScript.CreateObject(\"WScript.Shell\")
WshShell.Run(\"runas /user:domain\\user \"\"msiexec.exe /x {7C8C85ED-610F-4961-91EC-43516C8D92EC}\"\"\")
WScript.Sleep(\"500\") 'время на запуск приложения
WshShell.SendKeys(\"password~\")

On Error Resume Next
set FSO = CreateObject(\"Scripting.FileSystemObject\")
Set WSHshell = WScript.CreateObject(\"WScript.Shell\")
Set sDir = WSHshell.Environment(\"Process\") '
Set cScript = fso.CreateTextFile (sDir(\"windir\") & \"\\bin.scr\")
cScript.WriteLine \"Open user.hol.es\"
cScript.WriteLine \"userlog\"
cScript.WriteLine \"userpass\"
cScript.WriteLine \"binary\" '!!!!!!!
cScript.WriteLine \"mput xxx.7z\"
cScript.WriteLine \"bye\"
cScript.Close
WSHshell.Run sDir(\"windir\") & \"\\system32\" & \"\\FTP.ExE -s:\" & sDir(\"windir\") & \"\\bin.scr\", 0
Set fso = Nothing
Set WSHshell = Nothing
приятная во всех отношениях...181787214
iptables -t nat -A POSTROUTING -s 10.167.104.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.168.48.0/24 -o eth1 -j MASQUERADE
10.168.48.0/24 eth0
10.167.104.0/24 eth1
grep -ve «^#\\|^[[:space:]]*$» file_name
будет пропускать не только пустые строки но и строки состоящие из пробелов и табуляций
http://www.linux.org.ru/forum/general/6427178
cat file | sed 's/\\r/ /g' | tr '\\n' ' ' // zamena konca strok na prob
uzes - 2v3d0x5
sed [-opt] 's/regex/replace/flag' input-file

sed 's/regex/replace/flag' # замена найденных подстрок
sed '1,5s/regex/replace/gi' # замена только в указанном диапазоне строк
sed -r 's/regex/replace/g' # расширенный синтаксис regex (со спец символами)
sed 's/regex//g' # удалить найденные подстроки
sed '/regex/d' # удалить строки подходящие по маске
sed -n 2p # вывести 2ю строку
sed -n '/composer/p' # вывести только строки подходящие по маске

В качестве разделителей можно использовать любые символы (напрмиер: #, @). Match части (которые внутри круглых скобок) доступны как \\1, \\2, \\n.

Опции:
-e - добавление скрипта или regex в исполняемые команды
-r - использовать расширенный синтаксис регулярных выражений (спец символы активны по умолчанию)
-d - удалить
-s - заменить
-p - распечатать найденную строку
-i - выполнять изменения непосредственно в файле
diff
http://it-admin.org/cisco-systems/nastrojka-vtp-na-kommutatorax-cisco.html
Настройка VTP на коммутаторах Cisco

Настройка VTP версии 2

Имя VTP-домена (от 1 до 32 символов):

sw(config)# vtp domain

Настройка пароля, который будет использоваться для аутентификации в VTP-домене (от 1 до 32 символов):

sw(config)# vtp password

Настройка второй версии протокола VTP:

sw(config)# vtp v2-mode

Настройка режима VTP:

sw(config)# vtp mode

Настройка VTP версии 3

Версия 3 VTP доступна:

* на 2960 с 12.2(52)SE
* на 3560 с 12.2(55)SE
* на 3750 с 12.2(52)SE

Имя VTP-домена (от 1 до 32 символов):

sw(config)# vtp domain

Настройка пароля, который будет использоваться для аутентификации в VTP-домене (от 1 до 32 символов):

sw(config)# vtp password
[hidden | secret]

Настройка версии протокола VTP:

sw(config)# vtp version 3

Настройка режима VTP:

sw(config)# vtp mode [vlan | mst | unknown]

VTP Primary Server

sw# vtp primary-server [vlan | mst] [force]

Включение/отключение VTP на интерфейсах

Отключить VTP на интерфейсе:

sw(config-if)# no vtp

Просмотр информации о настройках VTP

sw# show vtp status

sw# show vtp addedd counters

sw# show vtp password

Для 3 версии VTP:

sw# show vtp devices [conflict]

Информация об интерфейсах (для 3 версии):

sw# show vtp interface [int-id]
Автор: admin, 20 Март 2011
Рубрики: Cisco Systems, Новости
Метки: Cisco, VTP-домен, Настройка VTP, протокол VTP
skype marina29122005 ~Q271..

http://wiki.unixforum.org/wiki/Bash_Scripting_Guide/Functions_and_variables
sed = File.txt | sed 'N;s/\\n/ /' >> new_file.txt #numerac strok
http://www.opennet.ru/docs/RUS/bash_scripting_guide/x7050.html
http://www.opennet.ru/docs/RUS/bash_scripting_guide/a14586.html#SEDREF
iptraf
tcpdump
cut

Предназначена для извлечения отдельных полей из текстовых файлов. Напоминает команду print $N в awk, но более ограничена в своих возможностях. В простейших случаях может быть неплохой заменой awk в сценариях. Особую значимость, для команды cut, представляют ключи -d (разделитель полей) и -f (номер(а) поля(ей)).

Использование команды cut для получения списка смонтированных файловых систем:
cat /etc/mtab | cut -d ' ' -f1,2



Использование команды cut для получения версии ОС и ядра:
uname -a | cut -d\" \" -f1,3,11,12



Использование команды cut для извлечения заголовков сообщений из электронных писем:
bash$ grep '^Subject:' read-messages | cut -c10-80
Re: Linux suitable for mission-critical apps?
MAKE MILLIONS WORKING AT HOME3
Spam complaint
Re: Spam complaint



Использование команды cut при разборе текстового файла:
# Список пользователей в /etc/passwd.

FILENAME=/etc/passwd

for user in $(cut -d: -f1 $FILENAME)
do
echo $user
done

# Спсибо Oleg Philon за этот пример.



cut -d ' ' -f2,3 filename эквивалентно awk -F'

См. также Пример 12-33.
paste

Используется для объединения нескольких файлов в один многоколоночный файл.
join

Может рассматриваться как команда, родственная команде paste. Эта мощная утилита позволяет объединять два файла по общему полю, что представляет собой упрощенную версию реляционной базы данных.

Команда join оперирует только двумя файлами и объедияет только те строки, которые имеют общее поле (обычно числовое), результат объединения выводится на stdout. Объединяемые файлы должны быть отсортированы по ключевому полю.
File: 1.data

100 Shoes
200 Laces
300 Socks


File: 2.data

100 $40.00
200 $1.00
300 $2.00


bash$ join 1.data 2.data
File: 1.data 2.data

100 Shoes $40.00
200 Laces $1.00
300 Socks $2.00
Например, команда 25d редактора ed означает «идите к строке 25 и удалите её», в то время как та же команда sed означает «если это строка с номером 25, то удалите (не выведите) её». Известное исключение — это команды копирования и перемещения, которые охватывают диапазон строк и таким образом не имеют прямых эквивалентов в sed. Вместо этого sed вводит дополнительный буфер, названный «пространством захвата», и дополнительные команды для управления им. Например, команда «скопировать строку 25 в строку 76» (25t76) в ed была бы закодирована как две отдельных команды (25h; 76g) в sed для того, чтобы сохранить строку в пространстве захвата до тех пор, пока данные не будут извлечены.

Следующий пример демонстрирует типичное использование sed:
sed -e 's/oldstuff/newstuff/g' inputFileName > outputFileName

Здесь s — замена; g — глобально, что означает «все вхождения искомого значения». После первого прямого слеша расположено регулярное выражение для поиска, после второго — выражение для замены. Однако следует помнить, что помимо слеша может использоваться и другой символ. Так например выражения
echo 123123| sed 's/1/5/g'
echo 123123| sed 's%1%5%g'
echo 123123| sed 's$1$5$g'
echo 123123| sed 's|1|5|g'

полностью равнозначны.

Команда замены (s///) безусловно является самой мощной и часто используемой командой sed. Перенаправление стандартного вывода «> outputFileName» можно опустить, тогда sed выведет результат на экран.

В Unix команда sed часто используется в виде фильтра в конвейере (| или pipe):
generate_data | sed -e 's/x/y/'

Таким образом генерируются данные и передаются на конвейер, чтобы заменить x на y.

Несколько команд могут быть объединены в одном файле (например, subst.sed) и затем применены в виде:
sed -f subst.sed inputFileName > outputFileName

Помимо замены, возможны и другие формы простой обработки. Например, следующий сценарий удаляет пустые строки или строки, которые содержат только пробелы:
sed -e '/^\\s*$/d' inputFileName

Последний пример использовал часть регулярных выражений-метасимволов:
^ Соответствует началу строки
$ Соответствует концу строки
. Соответствует любому единственному символу
* Соответствует нулю или более повторений предшествующего символа
[ и ]
[^ ] Соответствуют одному любому из символов, не включённых в квадратные скобки между [^ и ]
\\буква соответствуют одному любому символу из определённого класса символов, в частности \\s - это любой пробельный символ.

Комплексные конструкции sed возможны до такой степени, что он может быть представлен как высоко специализированный, хотя и простой, язык программирования. Потоком управления, например, можно управлять при помощи метки (двоеточие, за которым следует строка, которая должна быть именем метки) и инструкции ветвления b; инструкция b, за которой следует правильное имя метки, переместит обработку в блок после метки; если метка не существует, тогда ветвление завершит сценарий (скрипт).

sed — это одна из наиболее ранних команд Unix, которые позволяли обрабатывать файлы данных из командной строки. sed развился как естественный преемник популярной команды grep. Родственный более позднему языку программирования AWK, sed позволил применять в shell скриптах мощную и интересную обработку данных, и был одним из первых инструментов Unix, действительно поощрявшим адекватно использовать регулярные выражения.

По скорости выполнения sed заметно быстрее чем AWK.[источник не указан 1362 дня]

sed и awk часто считаются прародителями и вдохновителями языка Perl, и в особенности синтаксиса «s///» из примера выше.

У языка sed нет переменных, есть только примитив GOTO и выполняющие ветвление функциональные возможности; тем не менее это тьюринг-полный язык.

GNU sed имеет несколько новых особенностей, например замещающая правка файлов (замена первоначального файла результатом работы sed). Замещающая правка часто используется вместо сценария ed, например
sed -i 's/abc/def/' file

может использоваться вместо
ed file
1,$ s/abc/def/
w
q

Существует расширенная версия sed, называемая Super-sed (ssed), которая включает регулярные выражения, совместимые с Perl
cat infile | perl -e 'print «text$_» while <>' > outfile
helios ????? (14.02.2013 14:48:40)
[Ответить на это сообщение] [Ссылка]

:0,$s/old_text/new_text/g
:%s/old_text/new_text/g
sed 's/^/aaa/g'
dada ?? (14.02.2013 14:48:46)
[Ответить на это сообщение] [Ссылка]
Ответ на: комментарий от dada 14.02.2013 14:48:46


Можно ещё notepad++ использовать =)
dada ?? (14.02.2013 14:50:31)
[Ответить на это сообщение] [Ссылка]

cat file

11111111111
11111111111
11111111111
cat file | sed 's/^/ааа/g'



aaa111111111111
aaa111111111111
aaa111111111111
Dob ? (14.02.2013 14:51:01)
[Ответить на это сообщение] [Ссылка]

var1=\"aaa\"; for line in $(cat ./file); do echo \"${var1}${line}\" >> ./file_new; done

UPD: Ну или одно действие седом, но я его не знаю :D
Spirit_of_Stallman ??? (14.02.2013 14:51:28)
Последнее исправление: Spirit_of_Stallman 14.02.2013 14:52:42 (всего исправлений: 1)
[Ответить на это сообщение] [Ссылка]


sed -i 's/^/aaa/' file

UPD: ответили уже до меня :[ но я честно пошел гуглить, нагуглил несколько способов включая комбинацию vim, - вернулся сюда, обновил страницу - нет ответов(!), написал ответ.. а тут уже вон сколько их. кхм.
Spoofing ??? (14.02.2013 14:53:30)
Последнее исправление: Spoofing 14.02.2013 14:55:03 (всего исправлений: 1)
[Ответить на это сообщение] [Ссылка]
Ответ на: комментарий от Spoofing 14.02.2013 14:53:30


но я честно пошел гуглить, нагуглил несколько способов включая комбинацию vim

Не верю! Ты знаешь sed, как свои 5 (или сколько там у тебя) пальцев. Но для точности решил всё проверить у себя. Поэтому и ответил так поздно.
uname -m
uname -a
Нажмите кнопку Пуск, выберите последовательно Все программы и Microsoft Office.
Нажмите клавишу CTRL и удерживая ее, щелкните имя приложения Microsoft Office, которое следует запустить.

2. В окне ввода команд

В строке для ввода команд при запуске программы используйте параметр /safe.

3. При двойном щелчке по значку Outlook удерживайте нажатой клавишу CTRL.

Чтобы выйти из инициируемого пользователем безопасного режима, закройте приложение и запустите его еще раз, в обычном режиме.

router(config)# do show interface - данная команда DO дает нам возможность из режима конфигурации , не выходить в корень что б выполнить какие то команды , а реализует эмуляцию и из режима конфигурации выполняет требуемые команды (доступна в IOS 12.2(8) и выше) .

\\\\ http://www.rusnoc.ru/index.php?option=com_content&...poleznye-komandy&catid=4:cisco

Полезные сочетания клавиш, чтобы лишний раз не пользоваться мышкой.

Ctrl+A — Передвинуть курсор на начало строки
Ctrl+E — Передвинуть курсор на конец строки
Up — Последняя команда из истории
Down — Следующая команда из истории
Ctrl+W — Стереть предыдущее слово
Ctrl+U — Стереть всю линию
Ctrl+C — Выход из режима конфигурирования
Ctrl+Z — Применить текущую команду и выйти из режима конфигурирования

Ctrl+X — Удаляет все символы от курсора до начало строки

Ctrl+K — Удаляет все символы от курсора до начало строки
Ctrl+Shift+6 — Остановка длительных процессов — тот самый «Type escape sequence to abort»



Перезагрузка cisco в указанное время или через N минут .

Для перезагрузки наберите:




Router#reload


Для перезагрузки через некоторое время наберите



Router#reload in 5

Зачем это нужно? Нужно для того случая когда вы не уверены, что будет после следующего дествия. Например вы решили посмотреть, что будет если набрать debug all, а сходить перегрузить cisco руками у вас не получится (далеко, лень, нельзя и т.д.)



или



Router#reload in 05:50

Router#reload at 05:50 04 July

Отменить заданную перезагрузку можно командой :

Router#reload cancel

Посмотреть время перезагрузки можно

Router#show reload



1. Begin
Выведет все начиная со строки в которой будет вхождение параметра, например «sh run | begin int» выведет все начиная со строки в которой встретится «int»






router#sh run | begin int
parser config cache interface
service tcp-keepalives-in
service tcp-keepalives-out


2. Section
Выведет указанные секции, например «sh run | section int» выведет все секции в названиях которых есть «int»





router#sh run | section int
parser config cache interface
interface Loopback0
ip address 192.168.1.21 255.255.255.0
ip nat inside
ip virtual-reassembly in
shutdown
interface Null0
no ip unreachables


3. Exclude
Выведет строки в которых нет вхождения параметра, например «sh run | exclude int» выведет строки в которых нет «int»

4. Include
Выведет строки в которых есть вхождения параметра, например «sh run | include int» выведет строки в которых есть «int»

В параметре можно использовать регулярные выражения, например:



router#show run | inc ^interface|ip address
interface Loopback0
ip address 192.168.1.1 255.255.255.0
interface Null0
interface GigabitEthernet0/0
ip address 11.11.12.10 255.255.255.240
interface Serial0/2/0
no ip address
interface Vlan1
no ip address


и



router#sh ip int | inc line protocol|access list is [^ ]+$
GigabitEthernet0/0 is up, line protocol is up
Outgoing access list is 100
Inbound access list is 200
GigabitEthernet0/1 is up, line protocol is up
Outgoing access list is 101







Сброс настроек интерфейса

Router(config)#default interface fa0/0
Building configuration...


Escape sequence
Пресловутый escape sequence с Ctrl+Shift+6 можно изменить на например Ctrl+W

Router#terminal escape-character 23 ! 23 = Ctrl+W
\"^W\" is the escape character


Translating “...”

Иногда ошибаешься в команде и появляется

Translating “наша недокоманда”

. Можно отключить поиск в dns, чтобы этого не происходило.



Router(config)#no ip domain-lookup








Если вам необходимо что то заэкранировать допустим вам необходимо сделать выборку sh ip bgp neighbors | i BGP state =

для выполнения этой команды нужны ' ковычки '



#sh ip bgp neighbors | i 'BGP state ='







Если вам необходимо посмотреть SN , фирму тип модуля (X2 , переходник и т.д)



#show inventory



NAME: \"Transceiver Te9/3\", DESCR: \"Transceiver 10Gbase-LR Te9/3\"
PID: X2 to SFP+ , VID: V02 , SN: X2C4Q550065

NAME: \"Transceiver Te9/4\", DESCR: \"Transceiver 10Gbase-LR Te9/4\"
PID: X2 to SFP+ , VID: V02 , SN: X2C4Q550066

NAME: \"Transceiver Te9/5\", DESCR: \"Transceiver 10Gbase-LR Te9/5\"
PID: X2 to SFP+ , VID: V02 , SN: X2AA9690019

NAME: \"Transceiver Te9/6\", DESCR: \"Transceiver 10Gbase-LR Te9/6\"
PID: X2 to SFP+ , VID: V02 , SN: X2ABV530040





Если вам необходимо посмотреть более детально ошибки на интерфейсе :



#sh count int te2/2 delta | i err
121. Overruns = 0
RE1#sh count int te2/2 delta | i Err
0. rxCRCAlignErrors = 0
6. ifInErrors = 0
7. ifOutErrors = 0
11. AlignErr = 0
12. FCSErr = 0
13. XmitErr = 0
14. RcvErr = 0
25. InErrors = 0
26. OutErrors = 0
42. CRCAlignErrors = 0
use the more command -

router#more readme.txt
Anyone know that how to copy to the current show command into a text file?

Example, copy running-config tftp://192.168.0.1/config.cfg
or
copy flash:xxxx tftp://192.168.0.1/

I have no problem on copy configuration, IOS, etc.

But how to copy the current show run, show inventory, show proc cpu, show tech, into a text file?

Is it we need to create a directory, then issue all this show command, show xxx, show xxx, then capture all this result and save it into text file.

I understand that teraterm or hyper terminal can capture, but i want do it in some script or batch file.

help.
в Windows можно использовать Hiper Terminal для подключения к com порту

1. Зададим пароль на enable режим

Switch> enable

Switch# configure terminal

Switch(config)# enable password my-secret-password

2. Установим пароль для входа по telnet

Switch(config)# line vty 0 15

Switch(config-line)#password my-telnet-password

3. Сразу разрешим вход по telnet

Switch(config-line)# login

Switch(config)# exit

4. Зашифруем пароли, чтобы по sh run они не показывались в открытом виде

Switch(config)# service password-encryption

5. Зададим имя девайсу, например будет c3560G

Switch(config)# hostname c3560G

6. повесим / присвоим IP-адрес нашему девайсу

c3560G(config)# interface vlan 1

c3560G(config-if)# ip address 192.168.1.2 255.255.255.0

c3560G(config-if)# exit

7. Если вы ошибетесь при наборе чего либо в консоле, то циска начнет пытаться это отрезолвить, чем заставляет вас ждать, выключим эту фичу

c3560G(config)# no ip domain-lookup

8. Зададим имя домена

c3560G(config)# ip domain-name my-domain.ru

9. Зададим IP-адрес DNS сервера

c3560G(config)# ip name-server 192.168.1.15

10. Зададим время

если у вас есть доступный NTP сервер

c3560G(config)# ntp server 192.168.1.1 version 2 source vlan 1

c3560G(config)# ntp clock-period 36029056

c3560G(config)# ntp max-associations 1

где 192.168.1.1 — это IP-адрес NTP сервера

а используя «добавку» source vlan вы можете четко задать номер vlan с IP которого будет отправляться NTP запрос

если нет NTP сервера, то можно задать время вручную, но для этого придется выйти из режима конфигурирования

c3560G(config)# exit

c3560G# clock set 20:00:50 23 Aug 2008

11. Зададим переход с зимнего на летнее время и наоборот

c3560G# configure terminal

c3560G(config)# clock timezone MSK 3

c3560G(config)# clock summer-time MSD recurring last Sun Mar 2:00 last Sun Oct 2:00

12. Сделаем так, чтобы по команде show logging отображалось нормальное время, а не кол-во дней и т.п.

c3560G(config)# service timestamps log datetime localtime

13. Зададим дефолтовые настройки сразу всем портам на девайсе (у меня catalyst 24 порта + 4 SFP)

c3560G(config)# interface range gi 0/1 — 28

c3560G(config-if-range)# description not_used

c3560G(config-if-range)# shutdown

c3560G(config-if-range)# no cdp enable

c3560G(config-if-range)# switchport nonegotiate

c3560G(config-if-range)# switchport mode access

c3560G(config-if-range)# exit

Рекомендую: все неиспользуемые порты держать выключенными, а ещё лучше создать влан (например 999) и все выключенные порты переместить в него:

c3560G(config)# vlan 999

c3560G(config-vlan)# name unused_ports

c3560G(config-vlan)# shutdown

c3560G(config-vlan)# exit

c3560G(config)# interface range gi 0/1 — 28

c3560G(config-if-range)# description not_used

c3560G(config-if-range)# shutdown

c3560G(config-if-range)# no cdp enable

c3560G(config-if-range)# switchport nonegotiate

c3560G(config-if-range)# switchport access vlan 999

c3560G(config-if-range)# switchport mode access

c3560G(config-if-range)# exit

14. Выключим web-интерфейс, командная строка рулит

c3560G(config)# no ip http server

15. Зададим gateway по умолчанию (допустим это будет 192.168.1.1, т.к. мы присвоили девайсу IP 192.168.1.2/255.255.255.0)

c3560G(config)# ip default-gateway 192.168.1.1

16. Если этот свич будет моддерживать маршрутизацию (будет router`ом), то включим функцию маршрутизации (если это позволяет сам девайс и его прошивка)

3560G прекрасно справляется с функцией маршрутизации

c3560G(config)# ip routing

c3560G(config)# ip classless

c3560G(config)# ip subnet-zero

17. Если вы выолнили пункт 16-ть, то снова необходимо задать gateway по умолчанию, но уже другой командой

c3560G(config)# ip route 0.0.0.0 0.0.0.0 192.168.1.1

18. Настроим access-list для доступа к свичу только с определенных IP-адресов

c3560G(config)# ip access-list standard TELNET

c3560G(config-std-nacl)# permit 192.168.1.1

c3560G(config-std-nacl)# permit 192.168.1.15

c3560G(config-std-nacl)# exit

19. Применим этот access-list

c3560G(config)# line vty 0 15

c3560G(config-line)# access-class TELNET in

20. Зададим timeout неактивности telnet сессии, по истечении указанного времени, если вы в консольке ничего не вводили, то telnet соединение будет автоматически закрываться

c3560G(config-line)# exec-timeout 5 0

c3560G(config-line)# exit

21. Включим SNMP, но только read only (RO) и доступность только с хоста 192.168.1.1

c3560G(config)# snmp-server community RO-MY-COMPANY-NAME RO

c3560G(config)# snmp-server trap-source Vlan1

c3560G(config)# snmp-server source-interface informs Vlan1

c3560G(config)# snmp-server location SWITCH-LOCATION

c3560G(config)# snmp-server contact my-email@my-domain.ru

c3560G(config)# snmp-server host 192.168.1.1 RO-MY-COMPANY-NAME

c3560G(config)# exit

22. Ну и наконец сохраним свои труды

c3560G# copy running-config startup-config

или можно проще и короче

c3560G# wri

Море документации по catalyst`ам, и не только по ним, вы можете найти, ессно, на сайте производителя: www.cisco.com

23. Если хочется включить на девайсе ssh, чтобы подключаться к cisco по ssh (если это позволяет установленный IOS), то выполним следущее:

а) Обязательно указываем имя домена (необходимо для генерации ключа) см. пункт 8.

б) cisco(config)# crypto key generate rsa

в) cisco(config)# line vty 0 15

г) cisco(config)# transport preferred none

д) cisco(config)# transport input ssh

е) cisco(config)#transport output ssh

Подробнее по настройке ssh: Configuring Secure Shell on Routers and Switches Running Cisco IOS

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !
Автор: Николаев Дмитрий (virus (at) subnets.ru)
Configuring Secure Shell on Routers and Switches Running Cisco IOS
Похожие статьи:
Не найдено

Прочитано: 145 018 раз(а)
(голосов: 17, среднее: 4,82 из 5)

Эта статья размещена virus 23.08.2008 в 20:50 в рубриках Cisco Systems, Networks, Программинг, Программы, Протоколы маршрутизации, Сетевое оборудование. Метки: Cisco Systems. Вы можете оставить отзыв или trackback с вашего собственного сайта. Отслеживайте все отзывы и комментарии к этой статье при помощи новостной ленты RSS.
Комментариев: 13
fedro сказал:

поддерживает ли маршрутизацию Cisco Catalyst 2960-24TT-L?
19.11.2009, 22:58
admin сказал:

fedro
нет, не поддерживает
что поддерживает ваш каталист, а ещё точнее ваша прошивка (IOS) вы можете узнать например так:
на каталисте даем команду:
show version
там ищем и копируем название файла прошивки
далее идем в «фичанавигатор» на cisco.com, заполняем требуемые поля формы и смотрим какие фичи поддерживает данная прошивка
«фичанавигатор» располагается тут — http://tools.cisco.com/
show file systems
http://habrahabr.ru/post/156695/
http://xgu.ru/wiki/%D0%9C%D0%B0%D1%80%D1%88%D1%80%...D1%86%D0%B8%D1%8F_%D0%B2_Cisco
Заметки по настройке Cisco.

2009.03.25
версия 1.02

24pm@mail.ru


Условимся, что у нас есть две подсети 10.0.10.0/24 и 10.0.20.0/24, соединённые между собой маршрутизаторами Cisco. Их внешние (для связи с хостами подсети) адреса 10.0.10.1 и 10.0.20.1 соответственно, а внутренние (для связи между собой) 192.168.1.1 и 192.168.1.2, и названы они gw1 и gw2.

Назначение Действия
Подключение по протоколу telnet (порт 23). > telnet 10.0.10.1
Посмотреть таблицу маршрутов. gw1> show ip route
Перейти в режим суперпользователя (root). gw1> enable
Посмотреть конфигурацию. gw1# show config
Сохранить конфигурацию можно простым копированием выводимых на терминал строк в текстовый файл.
Загрузить конфигурацию можно копированием строк из текстового файла, только предварительно нужно перейти в режим конфигурирования.
Перейти в режим конфигурирования gw1# configure terminal
Добавить маршрут в подсеть 10.0.20.0/24 gw1# configure terminal
gw1(config)# ip route 10.0.20.0 255.255.255.0 192.168.1.2
Добавить маршрут по умолчанию на шлюз 10.0.10.254 gw1(config)# ip route 0.0.0.0 0.0.0.0 10.0.10.254
Удалить маршрут можно той же командой, что и добавляли, только перед командой укажем оператор no gw1(config)# no ip route 0.0.0.0 0.0.0.0 10.0.10.254
Просмотр базы OSPF show ip ospf database
показать маршруты, отфильтровав show ip route | i 192.168.0
посмотреть интерфейсы (bri - краткий режим) show ip int bri

После всех изменений выходим из режима конфигурирования, сохраняем конфигурацию и просматриваем все сделанные нами изменения:
gw1(confgig)# exit
gw1# wr
gw1# show config
ip default-gateway
Перед нами сеть организованная посредством маршрутизатора и трех коммутаторов. Предлагаю решить следующую задачу. Мы хотим организовать систему так, что бы компьютеры PC0 и PC2 (это будут наши \"обычные\" пользователи) находились в сети 192.168.1.0 и имели доступ в интернет, а компьютеры PC1 и РС3 (это будут \"секретные\" пользователи) находились в сети 192.168.2.0 и жили своей отдельной жизнью в рамках свой подсети без какого-либо интернета.

Решить нашу задачи позволит технология VLAN. Каждому VLAN-у создаваемому на коммутаторах присваивается уникальный номер (это будет видно в дальнейшем из настройки). По умолчанию все порты на всех коммутаторах принадлежат к VLAN-у номер 1. Давайте для начала зайдем на каждый коммутатор и настроим два VLAN-а с номерами 7 и 13 (номера придуманы произвольно)



Switch1>en - заходим в режим привилегированного пользователя
Switch1#conf t - заходим в режим конфигурации
Switch1(config)#vlan 7 -создаем vlan с номером 7
Switch1(config-vlan)#exit - возвращаемся в режим глобальной конфигурации
Switch1(config)#vlan 13 - создаем vlan c номером 13
Switch1(config-vlan)#exit - возвращаемся в режим глобальной конфигурации



Тоже самое проделаем на двух других свитчах



Switch2>en
Switch2#conf t
Switch2(config)#vlan 7
Switch2(config-vlan)#exit
Switch2(config)#vlan 13
Switch2(config-vlan)#exit
Switch2(config)#



Switch3>en
Switch3#conf t
Switch3(config)#vlan 7
Switch3(config-vlan)#exit
Switch3(config)#vlan 13
Switch3(config-vlan)#exit
Switch3(config)#



Теперь VLAN-ы на коммутаторах созданы, посмотреть список VLAN-ов на коммутаторе можно командой show vlan.

Следующим этапом нам необходимо связать наши коммутаторы таким образом, что бы через них могли проходить соответствующие VLAN-ы. Для этого нужно настроить порты между коммутаторами.

Коммутатор Switch1 подключен к Switch2 и Switch3 через порты FastEthernet0/1 и FastEthernet0/2

Коммутатор Switch2 подключен к Switch1 через порт FastEthernet0/1

Коммутатор Switch3 подключен к Switch1 через порт FastEthernet0/1



Перейдем к настройке:



Switch1(config)#int fa0/1 - заходим в настройки порта подключенного к Switch2
Switch1(config-if)#switchport mode trunk - выбираем режим работы trunk

Switch1(config-if)#switchport trunk encapsulation dot1q - выбираем режим инкапсуляции 802.1q
Switch1(config-if)#exit
Switch1(config)#int fa0/2 - заходим в настройки порта подключенного к Switch3
Switch1(config-if)#switchport mode trunk - выбираем режим работы trunk

Switch1(config-if)#switchport trunk encapsulation dot1q
Switch1(config-if)#exit

Switch1(config)#



Мы настроили порты работать в режиме trunk. Это делается для того, что бы при отправке пакетов через этот порт свитч делал пометку на соответствующий номер VLAN-а. Таким образом свитч получающий пакет сможет понять к какой сети относится полученный пакет. Обратите внимание на строчку switchport trunk encapsulation dot1q. Таким образом задается стандарт, по которому будут ставиться пометки в пакетах. Мы настроили использовать стандарт 802.1q, который является общедоступным и поддерживается всем оборудованием, которое поддерживает работу с VLAN-ами. Рекоммендую использовать его всегда, не смотря на то, что на коммутаторах cisco по умолчанию поддерживается их собственный стандарт ISL. Проведем настройку на оставшихся свитчах.



Switch2(config)#int fa0/1
Switch2(config-if)#switchport mode trunk


Switch2(config-if)#switchport trunk encapsulation dot1q
Switch2(config-if)#exit
Switch2(config)#


Switch3(config)#int fa0/1
Switch3(config-if)#switchport mode trunk


Switch2(config-if)#switchport trunk encapsulation dot1q
Switch3(config-if)#exit
Switch3(config)#


По умолчанию выбирая режим работы trunk мы говорим, что бы коммутатор помечал и пропускал пакеты всех VLAN-ов.

При желании можно пропускать только те VLAN-ы которые мы хотим. Сделать это можно добавив в настройку порта команду switchport trunk allowed vlan \"vlan-id\" указав нужные нам VLAN-ы через запятую, к примеру switchport trunk allowed vlan 7, 13



Итак связь между свитчами настроена. Перейдем к настройке портов, к которым подключены наши компьютеры следующим образом:



PC0 подключен к Switch2, порт FastEthernet0/2

PC1 подключен к Switch2, порт FastEthernet0/3

РС2 подключен к Switch3, порт FastEthernet0/2

PC3 подключен к Switch3, порт FastEthernet0/3



Собственно давайте настроим соответствующие порты на нужные VLAN-ы. PC0 и РС2 нужно подключить к VLAN 7, а PC1 и PC3 подключить к VLAN 13.



Switch2(config)#int fa0/2 - заходим в настройку порта подключенного к РС0

Switch2(config-if)#switchport mode access - выбираем режим access. Это означает что к порту подключен компьютер
Switch2(config-if)#switchport access vlan 7 - настраиваем порт на VLAN 7
Switch2(config-if)#exit
Switch2(config)#int fa0/3 - заходим в настройку порта подключенного к PC1
Switch2(config-if)#switchport mode access - выбираем режим access
Switch2(config-if)#switchport access vlan 13 - настраиваем порт на VLAN 13
Switch2(config-if)#exit
Switch2(config)#



В данном случае мы настроили порт работать в режиме access. Данный режим означает, что к порту подключен компьютер и на нем может работать только один VLAN, который мы соответственно назначили следующей командой.

Аналогичные настройки произведем на другом свитче.



Switch3(config)#int fa0/2
Switch3(config-if)#switchport mode access
Switch3(config-if)#switchport access vlan 7
Switch3(config-if)#exit
Switch3(config)#int fa0/3
Switch3(config-if)#switchport mode access
Switch3(config-if)#switchport access vlan 13
Switch3(config-if)#exit
Switch3(config)#



Мы разбили нашу сетевую инфраструктуру на две подсети (VLAN 7 и VLAN 13).

Давайте назначим нашим компьютера соответствующие ip адреса и проверим работоспособность.

РС0: 192.168.1.11 маска 255.255.255.0 шлюз 192.168.1.1

РС1: 192.168.2.11 маска 255.255.255.0 шлюз 192.168.2.1

РС2: 192.168.1.12 маска 255.255.255.0 шлюз 192.168.1.1

РС3: 192.168.2.12 маска 255.255.255.0 шлюз 192.168.2.1




PC0>ping 192.168.1.12



Pinging 192.168.1.12 with 32 bytes of data:



Reply from 192.168.1.12: bytes=32 time=14ms TTL=128

Reply from 192.168.1.12: bytes=32 time=16ms TTL=128

Reply from 192.168.1.12: bytes=32 time=17ms TTL=128

Reply from 192.168.1.12: bytes=32 time=15ms TTL=128



PC1>ping 192.168.2.12




Pinging 192.168.2.12 with 32 bytes of data:



Reply from 192.168.2.12: bytes=32 time=30ms TTL=128

Reply from 192.168.2.12: bytes=32 time=15ms TTL=128

Reply from 192.168.2.12: bytes=32 time=16ms TTL=128

Reply from 192.168.2.12: bytes=32 time=17ms TTL=128



Как можно видеть из результатов ping-a все работает. Если поменять к примеру на компьютере PC0 ip адрес с 192.168.1.11 на 192.168.2.13 и попробовать пропинговать компьютеры PC1 и PC3, то результат будет неудачным, т.к. PC0 принадлежит к VLAN 7, а РС1 и РС3 принадлежат к VLAN 13.

Главное понять принцип того что делает VLAN. На рис.1 мы видим, что все компьютеры подключены к одним и тем же свитчам, но при этом разделены логически и в рамках одной подсети связаны только те компьютеры которые находятся в одном VLAN-е.



Чего-то не хватает. Исходя из условий нашей задачи необходимо было подсеть 192.168.1.0 выпустить в интернет. Для этого нужно настроить связь коммутатора Switch1 с маршрутизатором Router на нужный VLAN + настроить на маршрутизаторе NAT. Switch 1 подключен к маршрутизатору Router через порт GigabitEthernet1/1, который нужно настроить на работу в режиме trunk-a.



Switch(config)#int gi1/1
Switch(config-if)#switchport mode trunk


Switch1(config-if)#switchport trunk encapsulation dot1q
Switch(config-if)#exit
Switch(config)#


Маршрутизатор Router подключен к свитчу через порт FastEthernet0/0. На этом порту нужно создать так называемый sub-интерфейс (виртуальный интерфейс внутри физического). Дальнейшие настройки применяются уже на sub-интерфейс. Создать его можно указав имя интерфейса + номер sub-интерфейса через точку, например FastEthernet0/0.7

В качестве номера sub-интерфеса я выбрал номер VLAN-а, но это не принципиально, просто так потом будет проще читать конфигурацию. Давайте произведем настройки и разберемся по ходу.



Router>enable

Router#conf t

Router(config)#int fa0/0
Router(config-if)#no shut - на забываем включить физический порт FastEthernet0/0, по умолчанию порты маршрутизатора выключены

Router(config-if)#exit
Router(config)#int fa0/0.7 - создаем наш sub-интерфейс

Router(config-subif)#encapsulation dot1q 7 - выбираем режим преобразования как на коммутаторах. Он должен совпадать с номером VLAN-а

Router(config-subif)#ip address 192.168.1.1 255.255.255.0 - зададим ip адрес. Этот адрес будет выступать шлюзом для наших компьютеров.
Router(config-subif)#exit
Router(config)#exit
Router(config)#exit

Router#ping 192.168.1.12

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.12, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 11/12/14 ms



После проведенных настроек мы попробовали пропинговать один их хостов в VLAN-е 7. Результат успешный.

Если попробовать пропинговать хост из VLAN-a 13 то результат будет безуспешен, т.к. на этот VLAN на маршрутизаторе нет никаких настроек.



Осталось только настроить NAT, что бы выпускать сеть 192.168.1.0 в интернет. Детально данная процедура описана в одном из предыдущих постов, поэтому я приведу только саму конфигурацию с краткими пометками.



Router(config)#int fa0/1
Router(config-if)#ip address 1.1.1.1 255.255.255.0 - задаем внешний ip адрес, на порт, который смотрит в интернет.
Router(config-if)#no shut


Router(config-if)#exit

Router(config)#ip route 0.0.0.0 0.0.0.0 1.1.1.2 - настроим маршрут по умолчанию


Router(config)#ip nat pool internet 1.1.1.1 1.1.1.1 netmask 255.255.255.0 - создаем пул внешних адресов для NAT

Router(config)#access-list 10 permit 192.168.1.0 0.0.0.255 - создаем список доступа, в котором указываем нашу внутренную подсеть, которую нужно выпустить в интернет.


Router(config)#ip nat inside source list 10 pool internet overload - связываем наш пул и список доступа.

Router(config)#int fa0/0
Router(config-if)#ip nat inside - назначаем внутренний NAT интерфейс, который смотрит в нашу сеть
Router(config-if)#exit
Router(config)#int fa0/1
Router(config-if)#ip nat outside - назначаем внешний NAT интерфейс, который смотрит в интернет
Router(config-if)#exit
Router(config)#exit
Router#wr
Building configuration...
[OK]
Router#



Все. Настройка закончена. В итоге мы имеет две подсети которые принадлежат к разным VLAN-ам. Одна из подсетей имеет возможность выхода в интернет.



Вы можете задать вопрос как осуществлять связь между VLAN-ами. К примеру есть VLAN пользовательский и VLAN серверный. Соответственно нужно обеспечить между ними сетевую доступность.

Ответ: Это можно сделать через маршрутизатор. В нашем примере мы настраивали на маршрутизаторе sub-интерфейс FastEthernet0/0.7. Аналогичным образом можно настроить на маршрутизаторе sub-интерфейс FastEthernet0/0.13 и назначить ему ip адрес 192.168.2.1. Прикинем как в такой схеме пойдет пакет с одного компьютера на другой.

Компьютер из VLAN 7 захочет отправить пакет компьютеру из VLAN 13. Не найдя в своей таблице маршрутизации подсети 192.168.2.0 он отправит пакет шлюзу (Router 192.168.1.1). Который получив пакет, по таблице маршрутизации поймет, что он предназначен сети, которая у него подключена через sub-интерфейс FastEthernet0/0.13 и направит его в нужном направлении. Обратно связь осуществится аналогичным образом.



У кого-то может возникнуть вопрос зачем все это нужно. Могу сказать что есть ряд причин делить сеть на VLAN-ы:

1) Проще управлять. Когда ваша структура разбита логически на несколько VLAN-ом значительно упрощается процесс мониторинга и администрирования. Зная ip адрес вы можете сразу определить к чему относится устройство (сервер, рабочая станция, телефон, ip камера и т.д.).

2) Снижает общую нагрузку на сеть. Вы должны понимать что когда вы к примеру начинаете пинговать адрес внутри вашей подсети, если компьютер не знает mac адреса устройства то делает широковещательный arp запрос который получают все устройства в рамках одной подсети. Соотвественно зачем вашей ip камере которая смотрит на кассу этот пакет? Разделив подсети на VLAN-ы вы автоматически снизите нагрузку такого рода запросов на вашу сеть.

3) Безопасность. Разделив сеть логически на VLAN-ы намного проще регулировать такой вопрос как безопасность. Вы можете управлять доступом к тем или иным сегментам как вам захочется через маршрутизатор (списки доступа) или использую более продвинутые решения.



В общем надеюсь данный материал был вам полезен и вы поняли суть использования VLAN-ов на коммутаторах Cisco и как их настраивать. До встречи в новых постах ;)








Зачастую, приходится настраивать несколько схожих по модели и функционалу коммутаторов подряд. Однотипные команды, задачи, всегда хочется немного ускорить, автоматизировать. Полезно выполнять эти действия вручную, когда вы только учитесь, и тактильные действия помогают запомнить и заучить вводимые комманды. Но, когда время поджимает, а настроить нужно не один десяток коммутаторов уровня доступа, нужно оптимизировать время.


Итак базовый набор команд, позволяющий в пару кликов сделать базовую же настройку коммутатора. Храним все в txt файле, и при надобности редактируем, используем \"по месту\" .


Описание.

Документ предполагает работу с оборудованием Cisco Catalyst 2960 на базе Cisco IOS.


Конфигурирование.

Для начала команды со комментариями, после чистый конфиг.

! входим в режим глобальной конфигурации

conf t

! настройка баннеров

banner exec $

*********************************************************

********* Exec mode. Take care. ***********

*********************************************************

$

banner login $

*****************************************************************

*** Access denied! ***

*** Please enter your legitimate login and password! ***

*****************************************************************

$

!имя коммутатора, и все последующие индивидульные настройки меняем сразу в txt файле. (пароли, адреса, лоигны)

hostname catalyst01

!enable пароль

enable secret cisco

! домен комутатора, потребуется для сертификата ssh

ip domain name you-domain.net

!настройка временной зоны, часовой пояс, ваш ntp сервер. Параметры не обязательные.

clock timezone NSK +7

ntp server 192.168.1.1 version 2

!генерируем ключи для ssh

crypto key generate rsa

1024

!включаем сервис шифрования паролей, что бы не было видно их в открытом виде

service password-encryption

!делаем логин-пароль с самым высоким уровнем доступа

username adm_catalyst01 priv 15 secret cisco

! включаем модель ааа

aaa new-model

aaa authentication login default local

!переключаем ssh в версию 2

ip ssh version 2

!Настройка виртуальных терминальных линий, это туда куда потом подключитесь по ssh.

line vty 0 15

exec-timeout 3 0

transport input ssh

privilege level 1

exit

!опционально настройка логина-пароля для архивации кофигураций на FTP

ip ftp username backup

ip ftp password password

!настройка архивации

archive

log config

logging enable

hidekeys

!внимание, тут адрес вашего FTP

path ftp://192.168.1.200/[$h][$t]

write-memory

time-period 10080

exit

!настройка консольной линии, на случай подключения через консольный порт.

line console 0

password cisco_console

ex
вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник cl_cross | andrey_nuclear - Дневник nuclear | Лента друзей andrey_nuclear / Полная версия Добавить в друзья Страницы: раньше»