вторник, 30 апреля 2013 г.

Запись в memcache через telnet

Очередная напоминалка самому себе. Для отладки определенного приложения требуется заполнить memcache нужными данными. Это можно сделать через telnet: set key flags expire bytes
Например:
$ telnet localhost 11211

set key 0 3600 6
mydata

понедельник, 22 апреля 2013 г.

NAT, диапазон белых адресов и ICQ

При создании NAT-сервера для большого числа пользователей естественно используется диапазон "белых" адресов. Делается просто
iptables -t nat -A POSTROUTING -s 172.16.0.0/12 -j SNAT --to-source 192.0.32.1-192.0.47.254
Но появляется проблема -- netfilter выдаёт псевдослучайный новый адрес для каждого потока, т.е. соединения типа RELATED получают адрес, отличный от адреса, который получило основное соединение. Например ICQ использует два подключения и в такой схеме не работает. Решение:
iptables -t nat -A POSTROUTING -s 172.16.0.0/12 -j SNAT --to-source 192.0.32.1-192.0.47.254 --persistent

пятница, 1 марта 2013 г.

tcpdump и lldp

Просто напоминалка самому себе, как отловить lldp-трафик с помощью tcpdump:
tcpdump -ni eth0 ether proto 0x88cc

понедельник, 11 февраля 2013 г.

rsync через ssh

Сегодня столкнулся с проблемой передачи файла с помощью scp. Каждый раз передача останавливалась на случайном месте, scp показывал статус передачи -stalled-, после чего (выждав таймаут) закрывался с ошибкой broken pipe. Не помогло даже снижение скорости (ключ -l). Канал, через который шла передача, меня уже неоднократно подводил, но другого способа попасть в защищенную сеть нет. Зато нашел способ передачи с использованием rsync:
rsync --rsh='ssh' -av --progress --partial username@server1.example.com:/path/file ./
Передача рвалась как и прежде, но теперь у меня появилась возможность докачивать файл. Rsync должен быть установлен на обоих машинах.

sudo через ssh

Иногда бывает необходимо срочно выполнить какую-то команду на куче серверов одновременно. И даже при наличии puppet на это уйдёт некоторое время. Поэтому я использую такой приём:
for i in $(seq 1 7); do ssh -t username@server${i}.example.com sudo ifconfig ix0 promisc up; done
А суть этого поста в параметре -t, без которого sudo не хочет запрашивать пароль.

пятница, 23 ноября 2012 г.

Свободная java и ipmi от SuperMicro

Просто напоминалка, как заставить работать java-интерфейс IPKVM (ipmi) от серверов Supermicro при использовании свободной java. Интерфейс ipkvm работает в Oracle Java, но в свободной java выдает сообщение об ошибке: "iKVM64 in java.library.path" Для этого нужно сохранить на диск файл launch.jnlp и добавить в секцию с нужной архитектурой две строчки. Например так:
<resources os="Linux" arch="x86_64">
     <nativelib href="liblinux_x86_64.jar" download="eager" version="1.0.3"/>
     <property name="jnlp.packEnabled" value="true"/>
     <property name="jnlp.versionEnabled" value="true"/>
</resources>
Сохранить и можно запускать.

понедельник, 19 ноября 2012 г.

Немного читерства в играх

Во время очередного приступа ностальгии по старым игрушкам установил себе сразу несколько хитов прошлых лет. Но вот беда, совершенно растерял навыки, ничего не получается. А бывало, проходил "по честному" Jungle Strike по два раза за день, т.к. инернета у меня не было, а фидошная нода принимала соединения только ночью, и получить новую игру было затруднительно.
В более позднее время, эпохи Windows 95,98 пользовался отличной утилитой Cheat'o'matic. Еще был более продвинутый аналог ArtMoney. Вот и полез искать, что есть такого же под Linux.
Нашел scanmem. Работает очень просто. Из под root:
# scanmem <pid>
При запуске игр из-под dosbox нужно указывать pid досбокса.
Дальше в игре смотрим на какой-нибудь количественный параметр и указываем это число в консоли scanmem. Меняем в игре значение (стреляем, покупаем, лечимся и т.д.) и снова вводим это значение в scanmem. Повторяем операцию до тех пор, пока не будет найдено единственное место в памяти, где хранится это значение ( в случае с Jungle Strike таких мест было три).
И дальше даём команду
set 999
Где 999 -- это значение, которое нам нужно.