понедельник, 30 ноября 2009 г.

Сделал паузу - скушал "Твикс"

Случилось это за день до пятницы 13-го ноября - 12-го, в четверг. Но что поделать...
Вернувшись из отпуска получил я на работе заработанную плату. И дабы не хранить её дома решил покормить банкомат Альфабанка полученными купюрами.
По пути домой на станции Волковская в ТЦ Радиус установили банкомат, точнее платёжный терминал.
Такой красивый:

Платёжный терминал оснащён купюроприёмником. Купюры он глотает по одной и обратно не выдаёт, о чём соответствующая предупреждающая надпись есть. В отличие от банкоматов с модулем CCDM (Check/Cash Deposit Module), которые берут банкноты пачкой и возвращают их обратно в случае проблем с операцией зачисления. Купюроприёмник вернуть банкноты не может, устроен он так...
Покормил я его 10 бумажками по одной тысячи рублей. Стало быть 10 тысяч заработанных терминал съел. Выполнил операцию "Зачисление на счёт". Задумался терминал... Думал долго может минуту или почти минуту...
После чего радостно сообщил "Операция успешно выполнена". Но чек не выдал.
Заподозрив неладное, попросил я его выдать мне мини-выписку. На распечатанном чеке операции зачисления не обнаружилось.
Ммм-да... Сделал паузу - скушал "Твикс"
Что-же делать. Придя домой, проверил в "Альфа-Клик" - реклама :)))... Ну нет денег.
Время вечер... Позвонил по телефону "Альфа-Консультант" - снова реклама :)))
Послушав некоторое время песню великого Луи Армстронга Go Down Moses. Вы тоже можете ей насладиться на законных условиях на Yandex - реклама :)))
Имел честь поговорить с первым оператором, которая сообщила что для всех дальнейших действий мне необходимо авторизоваться в Альфа-Консультанте. Код доступа и пароль, конечно я не помнил, но по счастью подготовил паспорт. Сверив мои паспортные данные и секретное слово (которое я помнил - О!) девушка сообщила мне код доступа и выслала временный пароль с помощью SMS. После чего предложила перевести меня на систему авторизации, но, к несчастью, мой домашний телефон отказался переключаться в тональный режим (АТС у меня импульсная).
Вновь перезвонить пришлось уже с сотового. Благо звонки из "Регионов России" бесплатные.
Дозвонился, послушал музыку (всё туже). Сообщил первой девушке свою проблему...
- На какой счёт зачисляли?
- Текущий.
- Нет поступлений.
- Знаю.
- Сейчас переведу на специалиста он заведёт претензию.
Вновь слушаю знакомую песню... Слушаю...
- Здравствуйте.
- Здравствуйте.
Излагаю проблему...
- На какой счёт зачисляли?
- Текущий.
- Нет поступлений.
- Знаю!
- Сейчас переведу на специалиста он заведёт претензию.
Хм... Интересно какова у них цикличность...
- Здравствуйте.
- Здравствуйте.
Излагаю проблему...
- На какой счёт зачисляли?
- Текущий.
- Нет поступлений.
- Да, я знаю!
- Сейчас заведу претензию.
Претензию завели. Сообщили что обычный срок рассмотрения претензий - 7 дней.
Четверг 12 закончился... Минут 40 телефонных переговоров, но зато нет необходимости писать бумажное заявление!
На следующей неделе, во вторник позвонил снова (конечно послушал музыку), был переведён оператором Владимиром на специалиста:
- Ваша претензия находится на рассмотрении. Решения пока нет. Обычный срок рассмотрения - 8 дней. Вам обязательно сообщат.
- Спасибо...
И ровно через 8 дней в пятницу 20-го пришла SMS следующего содержания:
Uvazhaemiy Klient ALFA-BANKA!
Po Vashey pretenzii prinyato 
polojitelnoe reshenie.
Primite nashy izvineniya.
Проверяю "Альфа-Клик" - деньги зачислены!

суббота, 28 ноября 2009 г.

mcs - манипулирование комментариями объектных файлов

В Solaris (а может и не только там) есть утилита для манипулирования комментариями объектных файлов (ELF) - msc:
/usr/ccs/bin/mcs
Весьма важное её применение просмотр что добавили в комментарии инженеры Sun Microsystems. Обычно это информация о версии исправления (patch) с которым этот файл прибыл в систему:
# mcs -p /platform/sun4u/kernel/sparcv9/unix
/platform/sun4u/kernel/sparcv9/unix:
@(#)SunOS 5.10 Generic 137111-04 Jun 2008

# mcs -p /platform/sun4u/kernel/unix
/platform/sun4u/kernel/unix:
@(#)SunOS 5.10 Generic 137111-04 Jun 2008

# mcs -p /usr/ccs/bin/mcs
/usr/ccs/bin/mcs:
@(#)SunOS 5.10 Generic 127127-11 Mar 2008
Так же это может быть информация о компиляторе или (и) сборщике:
# mcs -p /opt/csw/bin/wget
acomp: Sun C 5.8 Patch 121015-06 2007/10/03
iropt: Sun Compiler Common 11 Patch 120760-18 2007/09/19
ld: Software Generation Utilities - Solaris Link Editors: 5.8-1.302

четверг, 26 ноября 2009 г.

Обновление RDP лицензий Windows для rdesktop

Для работы RDP (если использовать в качестве клиента RDP rdesktop) достаточно запустить Лицензирование служб терминалов и клиенты получат временные лицензии (на 90 или 120 дней). Это период отсрочки на получение лицензий. Этот период можно продлить, получив новые временные клиентские лицензии.
Для этого необходимо в строке запуска rdesktop указать параметр нового имени хоста для которого мы хотим получить лицензию:
# rdesktop -n new_client_hostname server
Если бегло взглянуть на исходный код rdesktop 1.6, можно увидеть попытку сохранения лицензий в файл $HOME/.rdesktop/licence.new и переименовывания в файл $HOME/.rdesktop/licence.$HOSTNAME
void
save_licence(unsigned char *data, int length)
{
 char *home, *path, *tmppath;
 int fd;

 home = getenv("HOME");
 if (home == NULL)
  return;

 path = (char *) xmalloc(strlen(home) + strlen(g_hostname) + sizeof("/.rdesktop/licence."));

 sprintf(path, "%s/.rdesktop", home);
 if ((mkdir(path, 0700) == -1) && errno != EEXIST)
 {
  perror(path);
  return;
 }

 /* write licence to licence.hostname.new, then atomically rename to licence.hostname */

 sprintf(path, "%s/.rdesktop/licence.%s", home, g_hostname);
 tmppath = (char *) xmalloc(strlen(path) + sizeof(".new"));
 strcpy(tmppath, path);
 strcat(tmppath, ".new");

 fd = open(tmppath, O_WRONLY | O_CREAT | O_TRUNC, 0600);
 if (fd == -1)
 {
  perror(tmppath);
  return;
 }

 if (write(fd, data, length) != length)
 {
  perror(tmppath);
  unlink(tmppath);
 }
 else if (rename(tmppath, path) == -1)
 {
  perror(path);
  unlink(tmppath);
 }

 close(fd);
 xfree(tmppath);
 xfree(path);
}
И чтения от туда же:
int
load_licence(unsigned char **data)
{
 char *home, *path;
 struct stat st;
 int fd, length;

 home = getenv("HOME");
 if (home == NULL)
  return -1;

 path = (char *) xmalloc(strlen(home) + strlen(g_hostname) + sizeof("/.rdesktop/licence."));
 sprintf(path, "%s/.rdesktop/licence.%s", home, g_hostname);

 fd = open(path, O_RDONLY);
 if (fd == -1)
  return -1;

 if (fstat(fd, &st))
  return -1;

 *data = (uint8 *) xmalloc(st.st_size);
 length = read(fd, *data, st.st_size);
 close(fd);
 xfree(path);
 return length;
}
В установленной версии 1.5 тоже есть такие-же шаблоны.
# strings rdesktop | grep .rdesktop/lic
%s/.rdesktop/licence.%s
%s/.rdesktop/licence.%s
Но сохранённых лицензий на давно работающей системе нет (пользователи работают с rdesktop).
Участник конференции на freshmeat louigi600 предложил даже скрипт обёртку для rdesktop генерирующий новое имя хоста (перед этим он пробует использовать все имеющиеся).
Для устройств SunRay удалить старые лицензии можно так.
Для устройств Windows удалить старые лицензии можно так.

Удаление RDP лицензий Windows для клиентов mstsc.exe

Для работы RDP (терминалов Windows, клиент mstsc.exe) достаточно запустить Лицензирование служб терминалов и клиенты получат временные лицензии (на 90 или 120 дней). Это период отсрочки на получение лицензий. Этот период можно продлить, удалив временные клиентские лицензии с устройств.
Для устройств SunRay это можно сделать так.
Для клиентских устройств Windows необходимо удалить ключи реестра. Удобно это сделать, сохранив следующий текст в файле с расширением reg (например: remove-tsc-lic.reg):
REGEDIT4
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing\HardwareID]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing\Store\LICENSE000]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing\Store\LICENSE001]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing\Store\LICENSE002]
При следующем запуске mstsc.exe клиенты получат новые временные лицензии.

Удаление RDP лицензий Windows для uttsc

Для подключения по протоколу RDP в с Sun Ray клиентов рекомендуется использовать Sun Ray Connector for Windows - uttsc. Использовать его может как пользователь самостоятельно, так и возможна конфигурация на автоматический запуск в режиме киоска.
Для работы достаточно запустить Лицензирование служб терминалов и клиенты получат временные лицензии (на 90 или 120 дней). Это период отсрочки на получение лицензий. Этот период можно продлить, удалив временные клиентские лицензии с устройств.
Для управления RDP лицензиями в среде Sun Ray используется утилита utlicenseadm.
Получить список можно так:
# utlicenseadm -l -t RDPLicense
DESKTOP ID              LICENSE TYPE            LICENSE KEY
==============================================================
00144fe7a741            RDPLicense              QQAwADIAAAA=
080020ff8dd9            RDPLicense              QQAwADIAAAA=
Для удаления можно использовать простой скрипт:
#!/usr/bin/sh
PATH=/opt/SUNWut/sbin:/usr/bin
# Get list desktops with installed licenses
DESKTOP_LIST=`utlicenseadm -l -t RDPLicense | awk '/RDPLicense/{print $1}'`

for ID in ${DESKTOP_LIST}
do
  utlicenseadm -d ${ID}
done
При следующем запуске клиенты получат новые временные лицензии.

понедельник, 23 ноября 2009 г.

Краткая памятка Cisco IOS NAT (PAT)

Для конфигурирования NAT (в терминологии Cisco - PAT) на маршрутизаторе с Cisco IOS необходимо:
  • на внутреннем интерфейсе включить ip nat inside:
  • Router#configure terminal
    Router(config)#interface FastEthernet 0
    Router(config-if)#description inside interface (LAN)
    Router(config-if)#ip nat inside
  • на внешнем ip nat outside:
  • Router(config)#interface Ethernet 0
    Router(config-if)#description outside interface (WAN)
    Router(config-if)#ip nat outside
  • включить маршрутизацию с явным маршрутом:
  • Router(config)#ip route 0.0.0.0 0.0.0.0 xxx.xxx.xxx.xxx
  • создать список доступа с разрешёнными узлами:
  • Router(config)#ip access-list extended nat-allow
    Router(config-ext-nacl)#permit ip 192.168.0.xxx 0.0.0.255 any
  • указать для использования этот список:
  • Router(config)#ip nat inside source list nat-allow interface Ethernet0 overload

Падение VNC server в Solaris 10 при смене языка

Если совершить ошибку и, подключаясь VNC, сменить язык, например на Russian UTF-8 (ru_RU.UTF-8) то VNC сервер падает.


В логе (/var/dt/Xerrors) наблюдается нечто вроде:
/usr/openwin/bin/xset:  bad font path element (#54), possible causes are:
    Directory does not exist or has wrong permissions
    Directory missing fonts.dir
    Incorrect font server address or syntax
Попытка вновь подключиться к серверу, запущенному с помощью inetd приводит к его падению. Dtlogin пытается несколько раз перезапустить Xvnc и отключает его, сообщая:
error (pid 22852): Server for display :2 can't be started.
Вылечить это (решить текущую проблему, но не исправить ПО Solaris) можно удалив файлы в папке:
# ls /var/dt/sdtlogin/
lastlang_1      lastlang_2      lastlang_:1     lastsettings_1  lastsettings_2
# rm /var/dt/sdtlogin/*
Для варианта запуска через Dtlogin необходимо перезапустить сервис:
# svcadm restart svc:/application/graphical-login/cde-login:default

Большой адронный коллайдер и Storagetek SL8500

Читая новость Большой адронный коллайдер возвращается на http://mobbit.info/ нашёл прелюбопытную фотографию части БАК:

Очень это похоже на Sun StorageTek SL8500:

суббота, 21 ноября 2009 г.

Настройка VNC в Solaris 10 - запуск с помощью Xserver

Аналогично рассмотренному: Настройка VNC в Solaris 10 - запуск с помощью dtlogin. VNC можно запускать при старте системы, но использовать идеологически более правильное хранение параметров запуска в SMF.
Скрипт
/usr/X11/bin/Xserver
считывает параметры запускаемого X-сервера из SMF:
# grep x11-server /usr/X11/bin/Xserver
    svcprop -q -p $1 application/x11/x11-server$INSTANCE
    PROPVAL=$(svcprop -p $1 application/x11/x11-server$INSTANCE)
Таким образом правильнее хранить параметры в базе SMF.
Скрипт, выполняющий данную операцию выглядит так:
#!/usr/bin/sh

# Xwindows is configured with text files under /usr/dt
# but these shouldn't be modified,
# make copied of them under /etc/dt and modify the copies

VNC_LIST="1 2"

if [ ! -d $HOME/.vnc ]
then
  mkdir -p /etc/dt/config
fi
cp /usr/dt/config/Xservers /etc/dt/config/

# Add the /etc/dt/config/Xservers to configure the extra connections to Xwindows
# Set properties for x11-server instances
for VNC in $VNC_LIST
do

  echo "   :${VNC}   Local local_uid@none root /usr/X11/bin/Xserver :${VNC}"\
  >> /etc/dt/config/Xservers
  INST=`svcs -H -o INST svc:/application/x11/x11-server:display${VNC} 2> /dev/null`
  if [ -n "${INST}" ]
  then
    svccfg delete application/x11/x11-server:display${VNC}
  fi
  svccfg -s application/x11/x11-server add display${VNC}
  svccfg -s application/x11/x11-server:display${VNC} addpg options application

  svccfg -s application/x11/x11-server:display${VNC} \
         setprop options/server = astring: \"/usr/X11/bin/Xvnc\"
  svccfg -s application/x11/x11-server:display${VNC} \
         setprop options/server_args = astring: \"-PasswordFile=${HOME}/.vnc/passwd\"
  svccfg -s application/x11/x11-server:display${VNC} \
         addpropvalue options/server_args astring: \"-AlwaysShared\"
 
  svcadm refresh application/x11/x11-server:display${VNC}

done

# Configure a password, this is prompted for before the user sees a login screen
echo "Please set VNC password"
if [ ! -d $HOME/.vnc ]
then
  mkdir $HOME/.vnc
fi
vncpasswd
chmod +r /root/.vnc/passwd

# Restarting dtlogin
svcadm restart svc:/application/graphical-login/cde-login:default
При такой конфигурации используется глубина цвета по умолчанию для X11 в Solaris:
# svcprop application/x11/x11-server | grep depth
options/default_depth integer 24
В остальном Xvnc запускается с теми же параметрами.
/usr/X11/bin/Xvnc :1 -depth 24 -PasswordFile=/root/.vnc/passwd -AlwaysShared  -auth /var/dt/A:1-i1a4Lw

пятница, 20 ноября 2009 г.

Настройка VNC в Solaris 10 - запуск с помощью dtlogin

Иногда возникает необходимость оставлять графическую сессию на сервере надолго (например, при инсталяции SAP или базы Oracle). При настройке VNC сервера в Solaris 10 c помощью SMF inetd через супердемон inetd закрытие VNC клиента приводит к закрытию сессии.
На страничке Salix Training Limited есть отличная статья как настроить VNC на запуск с помощью dtlogin (CDE login service) - VNC on Solaris 10.
Так как теперь VNC сервер идёт в комплекте с Solaris 10 (начиная с 5/08 - U5) предложенное Salix решение можно значительно упростить. Для двух (число определено в списке VNC_LIST) постоянно запущенных сессий достаточно выполнит скрипт:
#!/usr/bin/sh

# Xwindows is configured with text files under /usr/dt 
# but these shouldn't be modified,
# make copied of them under /etc/dt and modify the copies

VNC_LIST="1 2"

if [ ! -d $HOME/.vnc ]
then
  mkdir -p /etc/dt/config
fi
cp /usr/dt/config/Xservers /etc/dt/config/

# Add the /etc/dt/config/Xservers to configure the extra connections to Xwindows
for VNC in $VNC_LIST
do
  echo "   :${VNC}   Local local_uid@console root /usr/X11/bin/Xvnc\
  :${VNC} -PasswordFile=${HOME}/.vnc/passwd -AlwaysShared"\
  >> /etc/dt/config/Xservers
done

# Configure a password, this is prompted for before the user sees a login screen
echo "Please set VNC password"
if [ ! -d $HOME/.vnc ]
then
  mkdir $HOME/.vnc
fi
vncpasswd
chmod +r /root/.vnc/passwd

# Restarting dtlogin
svcadm restart svc:/application/graphical-login/cde-login:default

Подключаться можно будет к сессии :1 (5901) и :2 (5901). Параметры разрешения и глубины цвета виртуального дисплея можно изменить, добавив дополнительные параметры Xvnc:
  • -depth [8|15|16|24] - по умолчанию 16
  • -geometry WxH - по умолчанию 1024x768
Можно настроить и другие параметры. Подробнее можно посмотреть man -M /usr/X11/man Xvnc.

P.S.
При поиске ссылки на man страницу Xvnc для Solaris нашёл универсальную инструкцию по настройке VNC в Solaris 10: How to Set Up VNC to Provide a Solaris Guest Graphical Login в документе по виртуализации: System Administration Guide: Virtualization Using the Solaris Operating System. Ошибка относительно необходимости добавления сервиса в /etc/services осталась... Ошибку исправили в аналогичном документе по OpenSolaris.

среда, 18 ноября 2009 г.

Великая сила OEM

Меня достаточно давно интересовал вопрос кто производит Sun StorageTek SL24 и SL48.
OEM происхождение не вызывало никаких сомнений уже очень давно.

Стоит только взглянуть на продукцию разных производителей - 2U:

И 4U:

И вот, читая новость о библиотеках Scalar® i40 и i80 от Quantum нахожу имя OEM производителя - BDT-Solutions GmbH компании из немецкого города Ротвайль

FlexStorII "Lissabon" for OEM customers LTO-2 и LTO-3


FlexStorII "Madrid" for OEM customers LTO-2 и LTO-3

Настройка VNC в Solaris 10 - запуск с помощью SMF inetd

В последних выпусках Solaris 10 (начиная с 5/08 - U5) поставляется VNC сервер, а именно RealVNC. Есть даже для него SMF сервис:
# svcs -l svc:/application/x11/xvnc-inetd:default
fmri         svc:/application/x11/xvnc-inetd:default
name         X server that displays to VNC viewers
enabled      false
state        disabled
next_state   none
state_time   Tue Nov 17 15:27:39 2009
restarter    svc:/network/inetd:default

Попытаемся его включить:
# svcadm enable svc:/application/x11/xvnc-inetd:default

И не получается:
# svcs -l svc:/application/x11/xvnc-inetd:default
fmri         svc:/application/x11/xvnc-inetd:default
name         X server that displays to VNC viewers
enabled      true
state        maintenance
next_state   none
state_time   Wed Nov 18 16:39:38 2009
restarter    svc:/network/inetd:default

Сервис описан как запускаемый с помощью супердемона inetd:
# svcprop svc:/application/x11/xvnc-inetd:default
inetd/name astring vnc-server
inetd_start/exec astring /usr/X11/bin/Xvnc\ -inetd\ -query\ localhost\ -once\ securitytypes=none

Беда собственно в том что сервис по имени vnc-server не определён в сервисах:
/etc/services

Добавим:
# printf "vnc-server\t5900/tcp\n" >> /etc/services

Можно перезапустить сервис:
# svcadm clear svc:/application/x11/xvnc-inetd:default

И чудо:
# svcs -l svc:/application/x11/xvnc-inetd:default
fmri         svc:/application/x11/xvnc-inetd:default
name         X server that displays to VNC viewers
enabled      true
state        online
next_state   none
state_time   Wed Nov 18 18:06:29 2009
restarter    svc:/network/inetd:default

понедельник, 16 ноября 2009 г.

Разводка разьёма последовательного порта Sun StorageTek SL500

На контроллере ленточной библиотеки Sun StorageTek SL500 для последовательного порта используется разъём RJ-45 (гнездо).
На множестве оборудования использутся такой разъём для последовательного порта. В том числе и оборудовании Sun. Во всех серверах Sun (включая японские M-series) используется стандартная разводка предложенная Дэйвом Йостом ещё в 1987 году. Такой же раскладкой пользуется и Cisco.
Строго говоря есть различия в этих разводках: в варианте Йоста используется сигнал DCD для DCE устройств. Sun в своих документах описывает этот сигнал двойственно - DSR/DCD. Различия можно считать несущественными, а в случае DTE устройств их и вовсе нет.
Существует ещё разводка кабеля EIA/TIA 561. Sun StorageTek SL500 не использует и ёё.
Разводка кабеля для подключения к стандартному 9-контактному последовательному интерфейсу PC следующая:

DB-9 Female
Line Name
Direction
RJ-45 Male
1
DCD
In
Not connected
2
RxD
In
4
3
TxD
Out
6
4
DTR
Out
3,8
5
SG
-
5
6
DSR
In
2
7
RTS
Out
7
8
CTS
In
1
9
RI
In
Not connected

Разводка кабеля для подключения к гнезду RJ45 (консоль Cisco, серверы Sun, терминальные концентраторы APC и другие...):

RJ-45 Male
Line Name
Direction
RJ-45 Male
1
CTS
In
1
2
DSR
In
2
3
RxD
In
4
4
SG
-
5
5
SG
-
5
6
TxD
Out
6
7
DTR
Out
3,8
8
RTS
Out
7

Нумерация контактов разъёма DB9 на кабеле (гнездо):


Нумерация контактов разъёма RJ45 на кабеле (вилка):

Установка пароля управления и IP адреса массивов Sun StorageTek 6xxx

Собственно зачем нужен последовательный кабель для Sun StorageTek 6xxx?
С помощью такого кабеля можно установить (собственно сбросить) пароль для управления массивом через CAM (SYMbol password).
Описание процедуры и пароль для доступа есть на docs.sun.com в документе Sun StorageTek 6140 Array Hardware Installation Guide в 6 главе.
Краткое изложение:
  • Подключить кабель
  • Установить параметры терминальной программы: 38400, 8 bit, no parity, 1 stop bit, flow control - none, эмуляция терминала VT100. Как показывает опыт скорость можно установить и 9600, на следующем этапе происходит выбор скорости порта массивом.
  • В терминальной программе (или терминальном концентраторе) послать Break. В putty это можно сделать через контекстное меню, выбрав Special Command -> Break.
  • В ответ на приглашение:
    Set baud rate: press  within 5 seconds
    Нажать кнопочку ПРОБЕЛ
  • В ответ на приглашение:
    Press within 5 seconds: <B> for Service Interface, <BREAK> for baud rate 
    Нажать кнопочку S
  • В ответ на приглашение:
    Enter Password to access Service Interface (60 sec timeout):
    Ввести пароль kra16wen
  • Далее следовать в соответствии задачами (установить IP, сменить пароль):
    Service Interface Main Menu
    ==============================
    1) Display IP Configuration
    2) Change IP Configuration
    3) Reset Storage Array (SYMbol) Password
    Q) Quit Menu
    Enter Selection: 

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

    Select Ethernet Port
    ==============================
    1) Ethernet Port: 1
    2) Ethernet Port: 2
    Q) Quit
    Enter Selection: 1 

    Но обычно назначаются адреса только для первого Ethernet порта каждого контроллера, обычно, в одной подсети.
    Для управления дисковым массивом достаточно подключить лишь один кабель к первому порту одного из контроллеров, но в этом случае будет невозможно производить обновление firmware.

пятница, 13 ноября 2009 г.

Разводка разьёма последовательного порта Sun StorageTek 6140

На контроллере дискового массива Sun StorageTek 6140 используется разъём MiniDIN 6, такой же, как для подключения PS/2 мыши и клавиатуры.
Разводка кабеля для подключения к стандартному 9-контактному последовательному интерфейсу PC следующая:

DB-9 Female
Line Name
Direction
MiniDIN 6 Male
1
DCD
In
Not connected
2
RxD
In
2
3
TxD
Out
1
4
DTR
Out
Not connected
5
SG
-
3,5
6
DSR
In
3,5
7
RTS
Out
6
8
CTS
In
4
9
RI
In
Not connected

Разводка кабеля для подключения к гнезду RJ45 (консоль Cisco, серверы Sun, терминальные концентраторы APC и другие...):

RJ-45 Male
Line Name
Direction
MiniDIN 6 Male
1
CTS
In
4
2
DSR
In
3,5
3
RxD
In
2
4
SG
-
3,5
5
SG
-
3,5
6
TxD
Out
1
7
DTR
Out
Not connected
8
RTS
Out
6


Нумерация контактов разъёма MiniDIN6 на кабеле (вилка):


Нумерация контактов разъёма DB9 на кабеле (гнездо):


Нумерация контактов разъёма RJ45 на кабеле (вилка):

Перезапуск сервиса в состоянии maintenance или degraded

Бывает так что при проблемах с питанием одновременно выключается и сервер и массив.
И если этим массивом является Sun-овский T3, то сервер успевает загрузиться быстрее, а файловые системы с массива не успевают смонтироваться.
В Solaris 10 с его Solaris Service Management Facility от
svc:/system/filesystem/local
зависят более четырёх десятков сервисов в том числе: sshd, samba, nfs, smtp и многие другие.
Очевидны два варианта решения этой проблемы: отключение зависимостей или перезапуск сервиса filesystem/local и, конечно, простейший - перезагрузка сервера.
Зависимостей много и отключать их в целом не очень разумно, особенно samb-у и nfs.
Для ручного перезапуска сервиса необходимо подключиться к консоли сервера (sshd так-же не работает).
Решением проблемы может служить следующий скрипт:
#!/usr/bin/sh

# STA The abbreviated state of the service instance

PATH=/usr/sbin:/usr/bin

COLUMN=STA

# MNT maintenance
# DGD degraded

FRMI=svc:/system/filesystem/local:default



STATUS=`svcs -H -o ${COLUMN} ${FRMI}`

if [ ${STATUS} = MNT ]
then
{
echo "Clearing ${FMRI} maintenance status"
svcadm clear ${FMRI}
}
elif [ ${STATUS} = DGD ]
then
{
echo "Clearing ${FMRI} degraded status"
svcadm clear ${FMRI}
}
fi


Выполнять его можно через cron, например, раз в минуту:
* * * * * /root/clear_local_fs


Аналогичная проблема при монтировании файловых систем nfs
svc:/network/nfs/client:default
В этом случае скрипт так же подходит. Необходимо лишь поменять значение FMRI.

четверг, 12 ноября 2009 г.

Удаление файлов возврата патчей Solaris

Согласно man странице patchadd при установке обновлений старые версии файлов сохраняются в папке:
/var/sadm/pkg/PKG/save
. Как результат при недостатке места в файловой системе /var можно получить сообщение Insufficient space in /var/sadm/pkg/PKG/save to save old files.
Для освобождения пространства можно воспользоваться следующим скриптом. Несомненно, это следует делать, если есть полная уверенность что откатывать ранее установленные патчи больше не понадобится. Например, такую уверенность даёт стабильная работа системы последние полгода.

#!/usr/bin/sh

BACKOUT_DIR="/var/sadm/pkg"
PKG_LIST=`ls $BACKOUT_DIR`


for PKG in $PKG_LIST
do
PATCH_LIST=`ls $BACKOUT_DIR/$PKG/save`
for PATCH in $PATCH_LIST
do
if [ $PATCH != pspool ]
then
du -hs $BACKOUT_DIR/$PKG/save/$PATCH
rm -r $BACKOUT_DIR/$PKG/save/$PATCH
fi
done
done

Что мне интересно - общие элементы Google Reader