Архив рубрики: Заметки

О чем мысли

Хотел бы поглужбе залезть в две темы и изучить соответствующие механизмы, но не хватает времени.

  1. Популярность в соцсетях копипасты «умных мыслей» и просто каких-то обрывков текста, обычно сводящихся к «я тебя любила, но ты плохой, а теперь я намного круче и поэтому пошел ты» (мне кажется, это совершенно чужие истории и с жизнями людей, которые это постят, они слабо коррелируют). Интересно, что ведь любую мысль, в том числе собственную, в соцсети легко записать и всем показать, однако копипаста преобладает, поэтому вопрос сложнее, чем может показаться. Кажется, это связано с изменениями в языке, с тем, что люди теперь читают и могут ли они вообще что-то написать, если дать им ручку, бумагу и больше ничего.
  2. Аудитория блога tema в LiveJournal. Интересен их социальный портрет, чем они живут, чем зарабатывают, кем себя представляют и откуда у них столько времени и желания перекидываться дерьмом в комментариях. Опять же, интересно, каково пересечение с другими аудиториями — BigPicture, Ибигдана и других. Тут есть что изучать, эта массовая энергия определенно может быть использована в нужном русле.

Linux — Порядок запуска служб

Иногда может потребоваться изменить порядок запуска служб в Linux, если некоторые из них оказываются зависимыми от других. Например, в моем случае одна из машин на RHEL 5 была членом домена, и в то же время на ней нужно было использовать VNC-сервер. После выполнения команды chkconfig vncserver onдля его постановки в автозагрузку выяснилось, что по умолчанию VNC-сервер запускается до Samba; таким образом, он не видит пользователей и завершается с ошибкой. Если же запустить его позже вручную, все нормально.

Итак, нужно изменить порядок запуска этих сервисов.

Посмотрим сначала /etc/rc.d/. Здесь есть подкаталоги для разных уровней запуска. Для тех уровней, в которых запускается служба (посмотреть можно через chkconfig --list), в подкаталогах есть символическая ссылка на скрипт запуска/останова. Например, в  /etc/rc.d/rc5.d/в моем случае имеется файл @S91vncserver(то, что начинается с S, относится к запуску, а с K — к останову). Цифра как раз задает порядок запуска.

Идем туда, куда указывает символическая ссылка — в /etc/rc.d/init.d/, искомый файл — vncserver.

#!/bin/bash
#
# chkconfig: - 91 35
# description: Starts and stops vncserver. \
#              used to provide remote X administration services.
...

Нужно отредактировать этот файл. Я заменил 91 на 93 (92 оставим про запас), чтобы служба запускалась позже:

# chkconfig: - 93 35

Теперь такая команда:

chkconfig vncserver on

Посмотрим в подкаталогах, расположенных в /etc/rc.d/@S91vncserverпревратилось в @S93vncserver. Теперь служба запустится после Самбы, что и подтверждает перезагрузка.

Linux — Настройка VNC Server

Рассмотрим основные моменты на примере Red Hat Linux. Для доступа к машине по VNC следует отредактировать /etc/sysconfig/vncservers, добавив в него строку вида:

VNCSERVERS="1:root 2:user"

Можно также установить дополнительные опции (например, разрешение) строкой VNCSERVERARGS=...

Затем нужно залогиниться пользователем, который будет работать с VNC, и задать пароль командой vncpasswd.

Запуск VNC-сервера:

service vncserver start

Автоматический запуск при загрузке:

chkconfig vncserver on

Сессия по умолчанию будет выглядеть весьма аскетично (используется twm window manager). Чтобы сессия выглядела как обычный десктоп, следует отредактировать /home/user/.vnc/xstartup, раскомментировав две строчки сразу после «Uncomment the following two lines for normal desktop»:

unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc

После этого возможен доступ по VNC на порт 590x, где x — цифра, соответствующая пользователю из строки VNCSERVERS. Если включен межсетевой экран, нужно открыть нужный порт. Например, для iptables:

iptables -A INPUT -i eth0 -p tcp --dport 5900:5904 -j ACCEPT

Что касается клиентской части, можно воспользоваться бесплатным VNC Viewer Free Edition.

См. также: http://www.redhat.com/magazine/006apr05/features/vnc/.

Linux — Виртуальные интерфейсы (дополнительные IP-адреса)

Здесь рассматривается добавление вторичного IP-адреса на физический интерфейс, система в данном случае — Red Hat Linux. Пример добавления интерфейса eth1:0, ассоциированного с физическим интерфейсом eth1:

ifconfig eth1:0 192.168.5.55 netmask 255.255.255.0 up

Чтобы интерфейс присутствовал после перезапуска, в /etc/sysconfig/network-scripts нужно создать соответствующий файл, в данном случае ifcfg-eth1:0 (последующие интерфейсы можно нумеровать последовательно, ifcfg-eth1:1, ifcfg-eth1:2 и так далее). Примерное его содержимое:

# 3Com Corporation 3c595 100BaseTX [Vortex]
DEVICE=eth1:0
BOOTPROTO=none
NETMASK=255.255.255.248
IPADDR=192.168.5.55
GATEWAY=192.168.5.1
TYPE=Ethernet
USERCTL=no
IPV6INIT=no
PEERDNS=yes

Примечание: если нужно, чтобы при запуске интерфейс поднимался или, наоборот, не поднимался, следует воспользоваться параметром ONPARENT:

ONPARENT=yes|no

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

Windows — Internet Explorer: узел не добавляется в надежные узлы

Если узел не добавляется в надежные узлы, можно добавить его вручную через реестр, например:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap]

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains]

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\somedomain.com]

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\somedomain.com\somehost]

"https"=dword:00000002

В данном случае добавлен сайт https://somehost.somedomain.com. Значение 2 — это и есть «надежные узлы».

Windows — Переключение языка (раскладки клавиатуры) EN-RU в DOS-сессиях

Чтобы в DOS-задачах работало переключение раскладки левыми и правыми Ctrl-Shift, в  \Windows\System32\autoexec.ntдолжно быть добавлено следующее:

lh %SystemRoot%\system32\kb16.com ru

Если это не помогает (известная проблема Windows XP), следует запустить приведенный ниже файл .reg:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout\DosKeybCodes]
"00000409"="ru"

Windows — Отправка факса во время разговора

В обычной ситуации, когда мы отправляем факс из Windows, предполагается, что телефонная линия свободна и модем готов набрать номер. Конечно, иногда требуется сначала пообщаться с собеседником (например, если на другой стороне факс не на автомате), а потом уже отправить факс, не вешая трубку. Такой простой сценарий в службе факсов не предусмотрен. Модем сообщит «Нет гудка» и будет ждать свободной линии.

Есть обходной путь — отправить факс в процессе разговора можно. Для этого в свойствах модема должна быть снята галочка «Ждать сигнала «Линия свободна». Следует создать фиктивного адресата, например, «Вручную» с коротким телефонным номером типа «1», и отправлять факсы на него. Когда отправка факса началась, можно повесить трубку.

Windows — NTLDR is missing, что делать?

Если Windows 2000 или XP не загружается, а на экране сообщение «NTLDR is missing», можно предпринять следующие действия:

  1. Загрузиться с загрузочного диска или с чего-нибудь еще.
  2. Запустить установку Windows, затем выбрать «Восстановление» (R) и «Консоль восстановления» (C).
  3. Выполнить команду:
    fixboot c:
  4. Кроме того, есть полезные команды help, mapfixmbr.
  5. exit.

Windows — Изменение IP-адреса и параметров TCP/IP утилитой netsh

В Windows есть замечательная команда netsh, которая позволяет из скрипта совершать самые разнообразные действия по настройке сети. Одна из часто встречающихся задач — изменение IP-адреса скриптом.

Изменить адрес с помощью netsh легко, нужно только знать, как называется интерфейс, на который будет повешен этот адрес. В русской версии Windows он обычно называется «Подключение по локальной сети».

Пример настройки адреса. Возьмем какой-нибудь 192.168.24.33:

netsh interface ip set address name="Подключение по локальной сети" source=static addr=192.168.24.33 mask=255.255.255.0 gateway=none

Другой пример с тем же адресом и с указанием основного шлюза 192.168.24.1:

netsh interface ip set address name="Подключение по локальной сети" source=static addr=192.168.24.33 mask=255.255.255.0 gateway=192.168.24.1 gwmetric=1

С помощью netsh можно, к примеру, очистить ARP-кэш (то же самое, что делает arp -d *):

netsh interface ip delete arpcache

Или сбросить стек TCP/IP в случае, когда он поврежден и подключение к интернету или локальной сети не работает:

netsh interface ip reset [log_filename]

Здесь log_filename — это имя файла для вывода в него лога, например, C:\ipreset.log. В Windows 2003, к слову, невозможно удалить и снова установить протокол TCP/IP в свойствах сетевого подключения, и в этом случае последняя команда весьма полезна.

Более того, с помощью netsh можно сбросить и Winsock. Это делается в случаях, когда его конфигурация повреждена — при этом может не работать интернет, а программы — выдавать ошибку открытия сокета:

netsh winsock reset

После этого нужно перезагрузить компьютер. Microsoft предупреждает о побочных эффектах, см. подробнее здесь.

Еще один интересный пример — разрешение удаленного управления компьютером в правилах встроенного брандмауэра Windows:

netsh firewall set service remoteadmin enable

Подобным образом можно настраивать любые правила файрвола из скрипта, для этого есть все возможности. В Windows Server 2008, Windows Vista и Windows 7 вместо netsh firewall  следует использовать netsh advfirewall firewall.

Дополнительная информация о netsh:

netsh ?

Добавляя через пробел команды и знак вопроса, можно изучить возможности netsh более детально:

netsh interface ip set ?
netsh firewall set ?

Утилита может работать и в режиме командной строки, для этого нужно просто запустить netsh без параметров.

См. также: Netsh — Википедия.

Windows — Определение MAC-адреса по IP, использование команды nbtstat

Определение MAC-адреса по IP

Как определить MAC-адрес, зная IP-адрес? Можно сначала попинговать компьютер или устройство по IP, а затем посмотреть таблицу ARP-записей. Здесь и далее 192.168.1.1 — это IP-адрес устройста, MAC которого нужно узнать. Пример:

ping 192.168.1.1
arp -a

Вы увидите таблицу вида:

Interface: 192.168.1.2 --- 0xb
  Internet Address      Physical Address      Type
  192.168.1.1           00-0b-2b-3f-4a-5c     dynamic
  192.168.1.255         ff-ff-ff-ff-ff-ff     static

В данном случае 00-0b-2b-3f-4a-5c — это и есть искомый MAC-адрес.

Если в сети используется NetBIOS, возможен и такой способ:

nbtstat -A 192.168.1.1

Далее посмотрим, что еще можно узнать с помощью команды nbtstat.

Просмотр таблицы NetBIOS

nbtstat -n

Просмотр содержимого кэша имен NetBIOS

nbtstat -c

Очистка содержимого кэша имен NetBIOS

nbtstat -R