17 апр. 2017 г.

Как я реанимировал CISCO-2950

Установленный "на территории" коммутатор cisco catalyst 2950, в один прекрасный день, перестал подавать признаков жизни. По-этому бы оперативно доставлен для последующего ремонта.

При попытке загрузки я получил следующий вывод:
C2950 Boot Loader (C2950-HBOOT-M) Version 12.1(14)AZ, RELEASE SOFTWARE (fc2)
Compiled Tue 14-Oct-03 17:14 by antonino
WS-C2950T-48-SI starting...
Base ethernet MAC Address: 00:##:##:##:##:c0
Xmodem file system is available.
Initializing Flash...
flashfs[0]: 357 files, 6 directories
flashfs[0]: 0 orphaned files, 0 orphaned directories
flashfs[0]: Total bytes: 7741440
flashfs[0]: Bytes used: 5703680
flashfs[0]: Bytes available: 2037760
flashfs[0]: flashfs fsck took 7 seconds.
...done initializing flash.
Boot Sector Filesystem (bs:) installed, fsid: 3
Parameter Block Filesystem (pb:) installed, fsid: 4
Loading "flash:/c2950-i6k2l2q4-mz.121-22.EA14.bin"...#####...######

File "flash:/c2950-i6k2l2q4-mz.121-22.EA14.bin" uncompressed and installed, entry point: 0x80010000
executing...

              Restricted Rights Legend

Use, duplication, or disclosure by the Government is
subject to restrictions as set forth in subparagraph
(c) of the Commercial Computer Software - Restricted
Rights clause at FAR sec. 52.227-19 and subparagraph
(c) (1) (ii) of the Rights in Technical Data and Computer
Software clause at DFARS sec. 252.227-7013.

           cisco Systems, Inc.
           170 West Tasman Drive
           San Jose, California 95134-1706



Cisco Internetwork Operating System Software 
IOS (tm) C2950 Software (C2950-I6K2L2Q4-M), Version 12.1(22)EA14, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2010 by cisco Systems, Inc.
Compiled Tue 26-Oct-10 10:35 by nburra
Image text-base: 0x80010000, data-base: 0x80680000


Initializing flashfs...
flashfs[1]: 357 files, 6 directories
flashfs[1]: 0 orphaned files, 0 orphaned directories
flashfs[1]: Total bytes: 7741440
flashfs[1]: Bytes used: 5703680
flashfs[1]: Bytes available: 2037760
flashfs[1]: flashfs fsck took 7 seconds.
flashfs[1]: Initialization complete.
Done initializing flashfs.
POST: System Board Test : Passed


=== Flushing messages (00:00:12 UTC Mon Mar 1 1993) ===

Buffered messages:
Queued messages:

 Signal 10, Exception code (0x001C)!

Frame 00: SP = 0x80CB7DB8    PC = 0x8067C654
Frame 01: SP = 0x80CB7DB8    PC = 0x802A9DFC
Frame 02: SP = 0x80CB7DD0    PC = 0x802A9B20
Frame 03: SP = 0x80CB7E10    PC = 0x802A9CF0
Frame 04: SP = 0x80CB7E88    PC = 0x802A9490
Frame 05: SP = 0x80CB7EB8    PC = 0x802AE990
Frame 06: SP = 0x80CB7EE8    PC = 0x802AEC48
Frame 07: SP = 0x80CB7F28    PC = 0x802AF118
Frame 08: SP = 0x80CB7F48    PC = 0x802AD5B8
Frame 09: SP = 0x80CB7F68    PC = 0x802AD938
Frame 10: SP = 0x80CB7FA0    PC = 0x802D86E4
Frame 11: SP = 0x80CB7FC8    PC = 0x801DB1EC
Frame 12: SP = 0x80CB7FE0    PC = 0x801DB290
Frame 13: SP = 0x80CB8008    PC = 0x801212BC
Frame 14: SP = 0x80CB8040    PC = 0x801214FC
Frame 15: SP = 0x80CB8150    PC = 0x801BF8D8


=== Crash Fault History ===

C2950 Software (C2950-I6K2L2Q4-M), Version 12.1(22)EA14, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Compiled Tue 26-Oct-10 10:35 by nburra
Signal = 10, Code = 0x1C, Uptime 00:00:12
r0: 00000000, AT: 00000000, v0: 80CB7DE0, v1: 00000001
a0: 00000001, a1: 40000050, a2: 00000000, a3: 40000050
t0: 80CB7DE0, t1: 80CB7DE0, t2: 802D6C80, t3: FFFF00FF
t4: 802D6C68, t5: FC7FFFFF, t6: E3FFFFFF, t7: 1FFFFFFF
s0: 80CB7DE0, s1: 80CB7EC8, s2: 80CB7EC8, s3: 808FCE44
s4: 00000000, s5: 00000002, s6: FFFFFFEF, s7: 80CB7E20
t8: 80CB7F10, t9: 00000000, k0: 00000000, k1: 00000000
gp: 80943600, sp: 80CB7DB8, s8: 00000001, ra: 802A9DFC
EPC: 8067C654, ErrEPC: 80C0411C, BadVA: 0x06800001, SREG: 1000E103
Cause: 0x0000201C (code 7): Data Bus Error exception

-Traceback= 8067C654 802A9DFC 802A9B20 802A9CF0 802A9490 802AE990 802AEC48 802AF118 802AD5B8 802AD938 802D86E4 801DB1EC 801DB290 801212BC 801214FC 801BF8D8

Как видно, оно падает на загрузке по какому-то крэшу.
Первое, что пришло на ум - проблема с flashfs. Как вариант - выполнить проверку.

Переходим в режим проверки:
0. Подключаемся через COM-порт.
1. Выключаем устройство.
2. Зажимаем клавишу MODE.
3. Включаем устройство, при этом MODE должна быть зажатой. Через секунд 5-10 на экране монитора появится приветствие switch:

Из доступных действий только:
    flash_init
    load_helper
    boot

flash_init - запустит инициализацию flash-памяти;
load_helper - не внёс ясности что именно делает, да и особо я не разбирался с ним;
boot - продолжит загрузку, но только если flashfs будет инициализирована.

Справку можно запросить командой ?, лично для меня странно, что этот пункт не отражен в меню:
           ? -- Present list of available commands
        boot -- Load and boot an executable image
         cat -- Concatenate (type) file(s)
        copy -- Copy a file
      delete -- Delete file(s)
         dir -- List files in directories
  flash_init -- Initialize flash filesystem(s)
      format -- Format a filesystem
        fsck -- Check filesystem consistency
        help -- Present list of available commands
 load_helper -- Load and initialize a helper image
      memory -- Present memory heap utilization information
       mkdir -- Create dir(s)
        more -- Concatenate (display) file(s)
      rename -- Rename a file
       reset -- Reset the system
       rmdir -- Delete empty dir(s)
         set -- Set or display environment variables
   set_param -- Set system parameters in flash
        trap -- Cause a software breakpoint to occur
        type -- Concatenate (type) file(s)
       unset -- Unset one or more environment variables
     version -- Display boot loader version

Как видим, функционал намного шире.
Инициализируем flash командой flash_init, только после этого мы сможем начать работать с flash памятью. Как и говорил, попробуем сделать проверку памяти с тестированием:
switch: fsck -test flash:/
Результат проверки:
Are you sure you want to fsck "flash:" (could take some time) (y/n)?y
flashfs[0]: testing block 0...erased 1 times
flashfs[0]: testing block 1...erased 1 times
...
flashfs[0]: testing block 60...erased 3 times
flashfs[0]: 357 files, 6 directories
flashfs[0]: 0 orphaned files, 0 orphaned directories
flashfs[0]: Total bytes: 7741440
flashfs[0]: Bytes used: 5703680
flashfs[0]: Bytes available: 2037760

flashfs[0]: flashfs fsck took 494 seconds.


Для надежности, сделаем проверку без тестирования:
switch: fsck flash:/

Проверка длилась 7 секунд, после чего я дал команду reset и снова поймал crash.

Снова загрузился через кнопку MODE, инициировал flash память.
Из всех возможных причин сбоя остается только корявость файла-образа. Смотрим что там на flash:
switch: dir flash:/
Directory of flash://

2    -rwx  112       <date>               info
3    -rwx  3722814   <date>               c2950-i6k2l2q4-mz.121-22.EA14.bin
4    drwx  4416      <date>               html
331  -rwx  112       <date>               info.ver
332  -rwx  421       <date>               env_vars
333  -rwx  3495      <date>               config.text.renamed
334  -rwx  24        <date>               private-config.text.renamed
335  drwx  1536      <date>               crashinfo
336  -rwx  556       <date>               vlan.dat.renamed
337  -rwx  24        <date>               private-config.text
338  -rwx  856       <date>               vlan.dat
350  -rwx  7919      <date>               config.text

2037760 bytes available (5703680 bytes used)
Попытка копировать файл c2950-i6k2l2q4-mz.121-22.EA14.bin бесполезна, т.к. не хватит места для записи. Пришлось слить аналогичный файл с живой системы по tftp. Только получив 100% работающий файл, можно думать об удалении bin-файла из памяти (впрочем, если железка сдохла, то её уже ничто не убьет):
delete flash:/c2950-i6k2l2q4-mz.121-22.EA14.bin
Как обычно, система задаст глупый вопрос, удалять или нет - если нужно - отвечаем Y.

Теперь нужно залить ранее слитый с другого девайса файл. Т.к. нам доступен только xmodem, то так и поступим.
Работаю я в Ubuntu, мне нужен был minicom (есть в apt), для других систем нужно искать (для windows режим есть в гипертерминале).
В minicom после настройки портов, сохранения параметров и выбора конечного файла для отправки, только сразу не отправляем, переходим на cisco и даем команду:
copy xmodem: flash:c2950-i6k2l2q4-mz.121-22.EA14.bin
По сути сделаем подмену файла. По окончании операции делаем reset. Система запросит разрешения на перезагрузку.
В моем случае это решило проблему.

На что обратим внимание. Скорость для COM-порта я не изменял, она была 9600 (по дефолту), передача образа в 3 мегабайта заняла чуть больше часа. 

Необходима помощь - пишите.

26 июл. 2016 г.

Python и DBF

Собственно стояла задача подружить Python и dbf-файл.

#!/usr/bin/env python
# -*- coding: utf8 -*-

import dbf

table = dbf.Table("table1.dbf", codepage='cp866')
table.open('read-only')

print table

for i in table:
print i.f1, i.f3.encode('utf8')

table.close()


Получал множество сообщений вида:
UnicodeDecodeError: 'ascii' codec can't decode byte 0x80 in position 0: ordinal not in range(128)

Пробовал decode/encode и т.п., пока не залез в руководство и не нашел там фразу о codepage.

13 мая 2016 г.

Ubuntu. Уведомления. notify-send

notify-send - программа предназначенная для отправки уведомлений для пользователей системы.
В Сети куча "копипастных" примеров как реализовать, но слишком мало объяснений. Например не объясняется, что все интересующие нас иконки лежат в директории /usr/share/icons/elementary-xfce/ (у меня xubuntu). 
Соответственно, вместо стандартного notify-send "Заголовок" "Текст" -i gtk-info, который мне покажет "i" в синем круге, я могу писать notify-send "Заголовок" "Текст" -i [любая_иконка_из_указанной_выше_директории], разумеется, без расширения. Пример:
notify-send "Заголовок" "Текст" -i applications-3D
Путь до applications-3D/usr/share/icons/elementary-xfce/categories/48/applications-3D.png

Кстати, если пишем скрипт для оповещения из cron'а, то следует перед выполнением команды указать export DISPLAY=:0.0, для того, чтобы сообщение ушло на наш экран, а не в пустоту.

На Хабре говорят, что это плохой тон и надо определять его автоматом:
# get_display [USER] — Returns $DISPLAY of USER.
# If first param is omitted, then $LOGNAME will be used.
get_display () {
who \
| grep ${1:-$LOGNAME} \
| perl -ne 'if ( m!\(\:(\d+)\)$! ) {print ":$1.0\n"; $ok = 1; last} END {exit !$ok}'
}


4 февр. 2016 г.

На сайте нет атрибутов hreflang.

Наверное, каждый, кто мало-мальски пытается продвинуть свой сайт, сталкивался с этой проблемой. Делать эту операцию следует если есть в наличии, скажем русская и французская версия сайта. Как в моем случае с сайтом service43.fr и его русским зеркалом ru.service43.fr. Для полной радости нет толкового описания. Ну что же. Если гуглить по этой теме, то можно найти, что работает на ISO 3166-1 alpha-2. Тут есть информация как какая страна и язык сокращается согласно стандарту.

Из инструментов: Тег-генератор и проверка результатов.

В блок head  прописываем полученные в тег-генераторе данные на обеих страницах и только если они являются зеркалами друг друга и обязательно 2 ссылки:
<link rel="alternate" href="http://ru.service43.fr" hreflang="ru-fr" />
<link rel="alternate" href="http://service43.fr" hreflang="fr" />

Одна ссылка указывает сама на себя, вторая на сайт-зеркало. Из всего этого следует отметить 2 вещи:
1. работать не будет пока на сайте не указать себя и сайт-зеркало. В противном случае при проверке результатов будем получать одни и те же сообщения.
2. hreflang="ru-fr". ru - язык для аудитории сайта; fr - для какой страны ориентирован сайт. В данном случае для русскоязычных пользователей находящихся на территории франции. Если поменять на fr-ru, то будет для франкоязычных пользователей, которые на территории России.

* кстати, для бельгийцев и белорусов следует учитывать сноски в стандарте.

6 июн. 2014 г.

SNR-S2950-24G. Boot раздел.

Просматривая help о том как сбросить пароль на SNR-S2950-24G, где-то на nag.ru столкнулся с такой интересной вещью, как удаление конфига из загрузчика.
Приступим.
Включаем наш девайс и в процессе его загрузки жмем ctrl+b, если все сделали правильно, то получим приглашение вида [Boot]:

Теперь разберем что нам доступно в этом режиме:
[Boot]: ?

 ?                                     - print this list
 h                                     - print this list
 setconfig                             - set bootrom configurations
 showconfig                            - show bootrom configurations
 saveconfig                            - save bootrom configurations
 clearconfig                           - set default bootrom configurations
 ping <x.x.x.x>                        - ping test
 load <filename>                       - load system image(binary format)
 write <filename>                      - write file to flash; file gotten by 'load'
 dir                                   - show files on flash
 delete <filename>                     - delete a file
 copy <src> <des>                      - copy file between flash and CF
 setbootpassword                       - set boot password(3-32)
 nobootpassword                        - cancle boot password
 boot img <filename> <primary|backup>  - set configurations of image start
 boot startup-config <filename>        - set path of system configuration file
 show boot-files                       - show configurations of system start
 baudrate <value>                      - set baudrate of console
 xmodem                                - load bootrom or img by xmodem
 reboot                                - reboot system

Первым делом посмотрим конфиг, с которым загрузились:
[Boot]: showconfig
Host IP Address:    10.1.1.1
Host IP Mask:       255.255.255.0
Server IP Address:  10.1.1.2
Server IP Mask:     255.255.255.0
Load Type:          FTP
FTP User Name:      guest
FTP User Password:  switch

Изменяем параметры при помощи setconfig (кстати, в диалоге), а сохраняем - saveconfig.

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

Остальные параметры понятны на уровне перевода. Единственный пункт, который заслуживает внимания - setbootpassword.
Этим параметром устанавливается пароль на вход в сам режим boot, даже с установленный паролем устройство загрузится не запрашивая его, а вот если решите обновить ПО или изменить скорость на консольном порту, то придется вводить пароль. Если пароль забыт, то скорее всего придется "ковырять" устройство изнутри, при помощи программатора, но это уже другая история.

5 июн. 2014 г.

Cisco 2950. Ответы на запросы.

Итак, у нас накопилось 3 вопроса о cisco 2950:
1. как на cisco2950 сбросить пароль
2. сброс к заводским настройкам cisco
3. cisco 2950 питание

Думаю, что пункты 1 и 2 можно объединить в один. Ранее я писал как "снести" конфигурационный файл при забытом пароле. Посмотреть можно тут.

Если не пользоваться "волшебной кнопкой", то второй пункт можно решить командой erase:
Switch>enable 
Password: 
Switch#erase ?
  /all            Erase all files(in NVRAM)
  flash:          Filesystem to be erased
  nvram:          Filesystem to be erased
  startup-config  Erase contents of configuration memory

Теперь разберемся:
/all - удалит все файлы в nvram
flash: - стирает все из flash-памяти
nvram: - стирает все из nvram-памяти
startup-config - удалит конфиг с которым и загружается устройство.

Что следует помнить
1. Удаление данных из nvram удаляет 2 конфига: startup-config и private-config.
2. Очистка flash может послужить причиной того, что ваша cisco более не загрузится и данные придется заливать через виндовый z-modem из гипертерминала, под linux я не встречал подобных решений, может кому-то и повезло.
3. удаление startup-config удалит только startup-config и после перезагрузки система предложит настроить её при помощи диалога или отказаться от него.

Теперь касательно вопроса о питании
Устройство укомплектовано блоком питания 110-127 V - 1A / 200 - 240 - 0.5A (50-60 Hz)
Указан максимальный ампераж БП. В моей практике 0.5 А, она никогда не потребляла.  Максимум 0.2 А.

27 мая 2014 г.

Всё о SNR-S2950-24G

По просьбам трудящихся и всех остальных кто google'ил и Яндекс'ил и случайно попадал на мою страницу в с вопросами "настройка ip snr-s2950-24g" и "snr-s2950-24g как узнать его ip", а таких немало.


Итак по порядку:
Настройка этого оборудования происходит через консольный порт, расположенный у нее на "морде" кабелем, который идет в комплекте, с одной стороны кабель RS-232, а с другой RJ-45. 


Теперь вопрос "как узнать его IP", ответ - по умолчанию ip 192.168.1.1 с маской 255.255.255.0, логин по умолчанию admin



Теперь о непосредственной настройке:

snr-s2950 - это управляемый коммутатор второго уровня. CLI (command line interface) визуально похож на CLI компании CISCO, но тем не менее им не является, т.к. CISCO написан на IOS, а snr, все же на linux, это мы можем узнать из логов загрузки, хотя в моем случае используется предыдущая модель:

System is booting, please wait...
Testing RAM...
0x04000000 RAM OK.
Attaching to file system ... done.

Loading flash:/nos.img ...

Starting at 0x10000...


Attaching to file system ... done.

Current time is Sun Jan 01 00:00:00 2006

SNR-S2950-24G Series Switch Operating System

Software Version 6.2.138.58
Compiled Oct 31 00:40:31 2011

26 Ethernet/IEEE 802.3 interface(s)

Mac Addr 00-03-0f-27-a4-e8

Loading factory config ...
%Jan 01 00:00:37 2006 %LINK-5-CHANGED: Interface Vlan1, changed state to UP
web server is on
%Jan 01 00:00:37 2006 %LINK-5-CHANGED: Interface Ethernet1/1, changed state to UP
%Jan 01 00:00:37 2006 %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet1/1, changed state to DOWN
%Jan 01 00:00:37 2006 %LINK-5-CHANGED: Interface Ethernet1/2, changed state to UP
%Jan 01 00:00:37 2006 %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet1/2, changed state to DOWN
...
%Jan 01 00:00:37 2006 %LINK-5-CHANGED: Interface Ethernet1/26, changed state to UP
%Jan 01 00:00:37 2006 %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet1/26, changed state to DOWN
SNR-S2950-24G>

Итак "она" загрузилась.
Чтобы получить список доступных команд нужно набрать ? (знак вопроса), получим такой листинг:

SNR-S2950-24G>?
Exec commands:
  clear               Reset functions
  crypto              Ssh crypto key clear command 
  debug               Debugging functions
  disable             Turn off privileged mode command
  enable              Turn on privileged mode command
  exit                End current mode and down to previous mode
  help                Description of the interactive help system
  language            Set language
  no                  Negate a command or set its defaults
  ping                Send ipv4 echo messages
  ping6               Send ipv6 echo messages
  set                 Set
  show                Show running system information
  telnet              Connect remote computer
  traceroute          Trace route to destination
  traceroute6         Trace route to IPv6 destination
  virtual-cable-test  Start virtual cable test
  who                 Display who is on vty

Команды я переводить не стану, т.к. большая часть техники в нашу страну поставляется на английском языке и английский язык для админа - это, по сути, его хлеб. Теперь от лирики к делу.

SNR-S2950-24G>enable   - входим в меню настройки

В данном оборудовании предусмотрен мастер настройки, вызывается командой setup:

SNR-S2950-24G#setup

Получим следующее:


---System Configuration Dialog---



At any point you may enter a question mark '?' for help.

Default settings are in square brackets '[]', if you do
not change the default settings, you may input enter.

Continue with configuration dialog? [y/n]:

Решаемся на настройку, нажимая "y", система предложит выбрать язык:


Continue with configuration dialog? [y/n]:y

Please select language:

[0]: English

[1]: Chinese

Selection(0|1)[0]:

Тут кому что удобно: 0 - для знатоков английского, 1 - для тех, кто по-китайски умеет, я выбираю 0, т.к. китайский для меня, пока, на уровне хардкора, хотя, если вы всё же случайно нажали 1, то всегда можно прервать выполнение комбинацией "ctrl + C".
Собственно, конфигурационное меню:

Configure menu
[0]: Config hostname
[1]: Config interface-Vlan1
[2]: Config telnet-server
[3]: Config web-server
[4]: Config SNMP
[5]: Exit setup configuration without saving
[6]: Exit setup configuration after saving

0 - позволит задать имя узла
1 - Задает IP адрес для vlan1 и в нем же настраивается возможность удаленной настройки через vlan1
2 и 3 - позволяют включить/отключить службу telnet и web соответственно, а так же задать имена пользователей и пароль к ним.
4 - выполняется настройка SNMP протокола.
5 и 6 - выход без сохранения конфига и с сохранением конфига соответственно.


Рассмотрим настройку оборудования на примере: нужно задать ip как 10.10.0.1 с маской 255.255.255.0, добавить vlan 2, сделать access порты для vlan 2 с 1 по 22, настроить combo-порты (25 и 26), как trunk-порты для 1 и 2 vlan. В виду проблемности самих SNR, а проблем у нее много, для изменения ip и объявления нового пользователя я использовал стандартную команду setup. О проблемах этого оборудования поговорим ниже, теперь к задаче.

SNR-S2950-24G>enable 
SNR-S2950-24G#config terminal
SNR-S2950-24G(config)#

Итак, мы в режиме конфигурации. Создаем vlan2:
SNR-S2950-24G(config)#vlan 2              
SNR-S2950-24G(config-vlan2)#

На этом создание vlan2 окончено. Можно, конечно, задать имя командой:
SNR-S2950-24G(config-vlan2)#name test

Теперь добавим access порты:
SNR-S2950-24G(config-vlan2)#exit
SNR-S2950-24G(config)#interface ethernet 1/1-22
SNR-S2950-24G(config-if-port-range)#switchport access vlan 2

Система ответит:
Set the port Ethernet1/1 access vlan 2 successfully
Set the port Ethernet1/2 access vlan 2 successfully
...
Set the port Ethernet1/22 access vlan 2 successfully

Что мы сделали? "Массово" сделали порты доступа для vlan2 с 1 по 22 порт включительно. Можно, конечно, и персонально задавать для каждого порта, для этого команда будет выглядеть так:
SNR-S2950-24G(config)#interface ethernet 1/1
SNR-S2950-24G(config-if-ethernet1/1)#switchport access vlan 2
...
SNR-S2950-24G(config-if-ethernet1/4)#interface ethernet 1/5
SNR-S2950-24G(config-if-ethernet1/5)#switchport access vlan 2

Теперь нужно сделать тегированными (trunk) портами 25 и 26:
SNR-S2950-24G(config-if-port-rp и объявления нового пользователя я использовал стандартную команду setup. О проблемах этого оборуange)#interface ethernet 1/25-26
SNR-S2950-24G(config-if-port-range)#switchport mode trunk
SNR-S2950-24G(config-if-port-range)#sw tr allowed vlan 1,2

Итак, порты тегированы. Остается только определить им скорость.
Т.к. я использую гигабитные SFP модули, но мне нужно чтобы они работали на скорости 100 мбит/с, я должен дать такую команду:
SNR-S2950-24G(config-if-port-range)#speed-duplex force100-full

На этом настройка закончена. Остается только сохранить настройки:
SNR-S2950-24G(config-if-port-range)#exit
SNR-S2950-24G(config)#exit
SNR-S2950-24G#write


Теперь расскажу о недостатках выявленных в процессе работы, хоть эти недостатки и бывают редко, но у них имеется массовость (около 10 устройств из 100):
  1. Самый важный и существенный, на мой взгляд, недостаток - это условное "зависание" устройства. Почему условное - потому что, пока его не перезагрузишь, устройство не станет работать нормально. Проявляется это со стороны клиентов, подключенных к портам, номера vlan которых отличны от 1: клиент сообщает, что все работало, а тут резко перестало.
  2. Не менее важный баг заключается в "потере" SFP модуля, т.е. устройство просто теряет модуль. Перезагрузка не помогает. При этом замена модуля ситуация спасает на неопределенный срок, а иногда приходится вовсе отходить от иcпользования SFP и подключать медиаконвертор.
  3. Этот баг также связан не только с SFP модулем, но и обычными ethernet-интерфейсами. Суть проблемы заключена в том, что в процессе работы на порту появляется произвольный линк. Отключаем кабель, а линк остается. Разумеется, если из консоли отключить интерфейс, то проблема не уйдет.

19 мар. 2014 г.

Восстановление данных InnoDB Mysql.

Чем дольше в Google ищешь, тем больше результатов и мнений, но ни одного прямого решения.
Итак, как же восстановить покусанные данные.
У меня началось с этого:
/etc/init.d/mysql startRather than invoking init scripts through /etc/init.d, use the service(8)utility, e.g. service mysql startSince the script you are attempting to invoke has been converted to anUpstart job, you may also use the start(8) utility, e.g. start mysqlstart: Job failed to start

Лезу в /var/lib/mysql, проверяем есть ли там хоть что-то:
root@doki:~# ls /var/lib/mysql
ibdata1  ib_logfile0  ib_logfile1  mysql  performance_schema  test  tv

Как видно, данные есть. В директории tv лежат, так называемые "фреймы", а в ibdata1 лежат данные БД.

Т.к. у нас не запускается сервер, то нам его надо запустить в принудительном режиме:
root@doki:/var/lib/mysql# mysqld --console --innodb_force_recovery=6

После этого он у меня ругается строкой:
140319  9:42:33 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.

А теперь то, что не сказано ни в одном мануале - открываем новый терминал и подключаемся к БД:
root@doki:~# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 24
Server version: 5.5.35-0ubuntu0.12.04.2 (Ubuntu)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql>

Подключились.
Теперь делаем бекап нашей СУБД:


root@doki:~# mysqldump tv -u root -p > /home/tv.sql

Убиваем службу командой: killall mysqld

Далее переименуем /var/lib/mysql:
root@doki:~# mv /var/lib/mysql /var/lib/mysql_

Создадим новую директорию mysql и дадим ей права для службы mysql:
root@doki:~# mkdir /var/lib/mysql
root@doki:~# chmown -R mysql:mysql /var/lib/mysql
root@doki:~# chmod -R 700 /var/lib/mysql

Создадим новую базу mysql:
root@doki:~# mysql_install_db
Installing MySQL system tables...
140319 10:59:17 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
OK
Filling help tables...
140319 10:59:18 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h doki password 'new-password'

Alternatively you can run:
/usr/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd /usr/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/scripts/mysqlbug script!

База создалась, добавим пользователя root:
root@doki:~# /usr/bin/mysqladmin -u root password 'new-password'

Добавился пользователь root с паролем new-password
Теперь логинимся в mysql под новым паролем и создаем базу данных tv:

root@doki:~# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.5.35-0ubuntu0.12.04.2 (Ubuntu)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database tv;
Query OK, 1 row affected (0.00 sec)

mysql> exit
Bye

Внесем данные  базу:
root@doki:~# mysql tv < /home/tv.sql

Все готово.

19 нояб. 2013 г.

Заметка. 1с тонкий клиент + Apache. Как это сделать.

1. Лезем в  Конфигуратор -> Администрирование -> Публикация на вэб-сервере.
2. Если система не найдет установленный сервер, то выдаст "Web серверы не обнаружены". Выкачиваем Apache.
3. Повторяем попытку 1
4. Если у нас нет компонентов для работы с веб серверами, то получим такую ошибку: Не установлены модули расширения веб-сервера. Следовательно надо установить компоненты из "Выборочной установки" -> "Компоненты веб-сервера".
5. Повторяем пункт 1. В итоге откроется окно с полями:
Имя: - имя БД, которое будет использоваться в Http, лучше использовать латиницу, скажем, market;
Веб-сервер: - текущий установленный веб-сервер;
Каталог: - путь к директории, в которой лежат параметры подключения к БД, например, c:\1c-client;
Публиковать тонкий клиент и веб-клиент - указывает какие клиенты будут доступны для опубликованной БД.
Публиковать Web-сервисы - указывает какие Web-сервисы будут использоваться, они указаны в таблице ниже.
6. Перезапускаем веб-сервис.
7. Подключаемся так: 127.0.0.1/market. Если все сделано верно, то у нас затребует ввод имени пользователя и пароля.

Что поменялось?
В настройках apache (httpd.conf) добавилась строка:
LoadModule _1cws_module "C:/Program Files/1cv82/8.2.13.219/bin/wsap22.dll"
и добавилось еще это:
# 1c publication
Alias "/market" "c:/1c-client/"
AllowOverride None
Options None
Order allow,deny
Allow from all
SetHandler 1c-application

ManagedApplicationDescriptor "C:/1c-client/default.vrd"

Собственно все.