PowerBroker Identity Services Open Edition. Решение для интеграции Linux в Active Directory
Сергей Яремчук
$ cat /etc/resolv.conf
domain example.org
search example.org
nameserver 192.168.10.100
$ sudo apt-get install likewise-open likewise-open-gui
$ sudo apt-cache show likewise-open | grep –i version
$ sudo chmod +x ./LikewiseOpen-6.0.0.8398-linux-amd64-deb.sh
$ sudo sh ./LikewiseOpen-6.0.0.8398-linux-amd64-deb.sh
$ sudo /opt/likewise/bin/domainjoin-cli join example.org Administrator
$ sudo /opt/likewise/bin/lwsm list
$ /opt/likewise/bin/lwconfig --list
$ sudo /opt/likewise/bin/lwconfig AssumeDefaultDomain true
$ sudo /opt/likewise/bin/lwconfig --detail AssumeDefaultDomain
$ sudo /opt/likewise/bin/lwconfig --show AssumeDefaultDomain
$ sudo nano /opt/likewise/share/config/lsassd.reg
"AssumeDefaultDomain"=dword:00000001
$ sudo /opt/likewise/bin/lwregshell import /opt/likewise/share/config/lsassd.reg
$ sudo /opt/likewise/bin/lw-refresh-configuration
admin:x:120:EXAMPLE\domain_user
% EXAMPLE\\domain^admins ALL=(ALL) ALL
-----------------------------------------------------------------------------------------------------------------
Универсальный сервер сетевой загрузки и установки. Часть 2
Сергей Крутских
# Эта директива установки по умолчанию. Нам она не нужна – есть меню выбора установок
#default xenserver
# Наименование загрузки (на ваш выбор)
label xenserver
# Название пункта меню
menu label Install - ^Citrix XenServer
# Ядро-загрузчик установки (xensrv/ – директория на сервере установки)
kernel xensrv/mboot.c32
# Параметры установок, рекомендованные Citrix
append xensrv/xen.gz dom0_mem=752M com1=115200,8n1 console=com1,tty --- xensrv/vmlinuz console=ttyS0,115200n8 console=tty0 --- xensrv/install.img
// Монтируем DVD
# mount /media/dvd /mnt
// Или iso-образ Citrix XenServer 5.6.0
# mount -o loop /distrib/CitrixXS56.iso /mnt
answerfile=http://myhost.ru/5.6.0-answerfile \
install --- /tftpboot/xenserver/install.img
Alias /ubuntu "/tftpboot/ubuntu/"
Options Indexes
AllowOverride None
Order allow,deny
Allow from all
Alias /centos "/tftpboot/centos/"
Options Indexes
AllowOverride None
Order allow,deny
Allow from all
# Наименование загрузки (на ваш выбор)
label ubuntu
# Наименование пункта меню
menu label Install - ^Ubuntu 10.10 x64 cloud
# Ядро установщика
kernel ubuntu/linux
# Включить графический режим установщика
append vga=normal
# Сжатая файловая система
initrd=ubuntu/initrd.gz
# Путь к файлу ответов, параметр «– quiet» – установка
# с вводом параметров в ручном режиме (необходимо указывать,
# если не все параметры описаны в файле ответов)
preseed/url=http://192.168.1.7/ubuntu/preseed/cloud.seed – quiet
label CentOS
menu label Install - ^CentOS-6.0
kernel centos/vmlinuz
append initrd=centos/initrd.img text
-----------------------------------------------------------------------------------------------------------------
Облако в руках
Антон Борисов
Листинг 1. Установка vSphere CLI «в лоб» с первого раза не удалась
root@opensuse:/home/root/src/vmware-vsphere-cli-distrib # ./vmware-install.pl
Листинг 2. Установка Perl-модулей в ручном режиме иногда является самым оптимальным решением
# wget http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/Data-Dump-1.19.tar.gz
# tar xzvf Data-Dump-1.19.tar.gz
# cd Data-Dump-1.19/
~/Data-Dump-1.19 # perl Makefile.PL
~/Data-Dump-1.19 # make
~/Data-Dump-1.19 # make test
~/Data-Dump-1.19 # make install
Листинг 3. Консольное приложение vSphere CLI установлено и готово к работе
opensuse:~/src/vmware-vsphere-cli-distrib # ./vmware-install.pl
Листинг 4. Получение удаленно списка установленных пакетов самого гипервизора
$ esxcli -s 10.10.7.7 -u root -p 1234567 software vib list
Листинг 5. Можно запросить, например, список запущенных приложений на гипервизоре
$ esxcli -s 10.10.7.7 -u root -p 1234567 vm process list
Листинг 6. Удаленно можно выяснить, какие команды понимаетутилита esxcli
$ esxcli -s 10.10.7.7 -u root -p 1234567 esxcli command list
Листинг 7. Кроме удаленного доступа, можно непосредственно вызывать команды и на самой системе виртуализации
anton@opensuse:~> ssh -C root@10.10.7.7
~ # esxcli esxcli command list | more
Листинг 8. Для виртуальной машины нужен управляющий файл, файловый образ и установочный ISO
~ # mkdir /vmfs/volumes/datastore1/VM2
~ # cd /vmfs/volumes/datastore1/VM2/
/vmfs/volumes/4e5fcecc-72db69ae-45f1-0016353cc9cb/VM2 # vmkfstools -c 15G -a lsilogic VM2.vmdk
/vmfs/volumes/4e5fcecc-72db69ae-45f1-0016353cc9cb/VM2 # cat VM2.vmx
/vmfs/volumes/4e5fcecc-72db69ae-45f1-0016353cc9cb/VM2 # scp root@10.10.7.1:/root/windows_server_2008_standard_r2_x64_lic.iso ./
/vmfs/volumes/4e5fcecc-72db69ae-45f1-0016353cc9cb/VM2 # vim-cmd solo/registervm /vmfs/volumes/datastore1/VM2/VM2.vmx VM2_Windows2008
/vmfs/volumes/4e5fcecc-72db69ae-45f1-0016353cc9cb/VM2 # vim-cmd vmsvc/getallvms
# vim-cmd vmsvc/power.on 5
Листинг 9. Открытых портов для VNC-соединения не обнаружено
anton@opensuse:~> vncviewer 10.10.7.7:55555 -nojpeg -x11cursor
Листинг 10. Работа со встроенным файрволом в ESXi возможна через утилиту esxcli
# esxcli network firewall ruleset list
VNC
inbound
tcp
dst
55555
true
false
Листинг 11. Перечитали новые правила для файрвола и убедились, что нужные нам разрешены
# esxcli network firewall refresh
# esxcli network firewall ruleset list
# vim-cmd vmsvc/tools.install 5
Листинг 12. Проверяем, что VMware Tools работают
# vim-cmd vmsvc/get.summary 5 | more
Листинг 13. Для виртуальной сетевой карты E1000 назначен идентификатор 4000
# vim-cmd vmsvc/device.getdevices 5 | more
# vim-cmd vmsvc/device.connection 5 4000 1
# vim-cmd vmsvc/reload 5
# vim-cmd vmsvc/power.on 5
# vim-cmd vmsvc/get.summary 5 | grep ipAddress
# vim-cmd vimsvc/license --set=string
# vim-cmd hostsvc/storage/iscsi
# vim-cmd hostsvc/datastore/nas
Листинг 14. Установка OVF Tool на локальную машину оператора достаточна проста
opensuse:~ # ./VMware-ovftool-2.1.0-467744-lin.x86_64.bundle
Листинг 15. Несколько минут, и новая виртуальная машина автоматически развернута на гипервизоре
# ovftool ./VMware-vCenter-Server-Appliance-5.0.0.3324-472350_OVF10.ovf vi://10.10.7.7
Листинг 16. Сохранить виртуальную машину с гипервизора впоследствии можно в планировщик
# ovftool --powerOffSource --compress vi://10.10.7.7/VM2_Windows2008 ./VM2.ovf
vi://Username:Password@HypervisorIP/VM_Name
-----------------------------------------------------------------------------------------------------------------
Внедрение переносимых приложений
Иван Коробко
Листинг 1. Создание ярлыка в папке «Мой компьютер». REG-файл
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\CLSID\{060204b7-01fd-437c-9e59-d3e44c017713}]
@="Acroba Reader X"
"infotip"="Adobe Acrobat Reader X (англ.)"
[HKEY_CLASSES_ROOT\CLSID \{060204b7-01fd-437c-9e59-d3e44c017713}\defaulticon]
@="\\\\Server\\Share$\\AReader\\AdobeReadeX.exe,0"
[HKEY_CLASSES_ROOT\CLSID\{060204b7-01fd-437c-9e59-d3e44c017713}\shell]
[HKEY_CLASSES_ROOT\CLSID\{060204b7-01fd-437c-9e59-d3e44c017713}\shell\open]
[HKEY_CLASSES_ROOT\CLSID\{060204b7-01fd-437c-9e59-d3e44c017713}\shell\open\command]
@="\\\\Server\\Share$\\AReader\\AdobeReadeX.exe"
[HKEY_CLASSES_ROOT\CLSID\{060204b7-01fd-437c-9e59-d3e44c017713}\shellFolder]
"attributes"=hex:00,01,00,a0
[HKEY_LOCAL_MACHINE\Software\Microsoft\CurrentVersion\Explorer\MyComputer\NameSpace\{060204b7-01fd-437c-9e59-d3e44c017713}]
Листинг 2. Вызов веб-сайта (PowerShell)
$ie = New-Object -com InternetExplorer.Application -ErrorAction "silentlycontinue"
$ie.visible =0
while ($ie.busy -eq $true ) {}
$ie.navigate("http://portableApp")
while ($ie.busy -eq $true) {}
$ie.quit()
-----------------------------------------------------------------------------------------------------------------
IP SLA и EEM
Игорь Перевера
show ip sla application
// Указываем незанятый номер
(config)# ip sla 12
// Отслеживаем устройство с IP-адресом 192.168.14.111
(config-ip-sla)# icmp-echo 192.168.14.111
// Частота выполнения, через 300 с или один раз в 5 мин
(config-ip-sla-echo)# frequency 300
(config-ip-sla-echo)# exit
// IP SLA 12, время существования – всегда, время запуска – сейчас
(config)# ip sla schedule 12 life forever start-time now
>show ip sla statistics
#tclsh
(tcl)#snmp_getone public 1.3.6.1.4.1.9.9.42.1.2.9.1.6.12 // где public – это SNMP community
(tcl)#exit
#show ip sla statistics 12
#tclsh
(tcl)#snmp_getone public 1.3.6.1.4.1.9.9.42.1.2.9.1.6.12 // где public – это SNMP community
(tcl)#exit
#show ip sla statistics 12
(config)# event manager applet SLA-echo-no
(config-applet)# event snmp oid 1.3.6.1.4.1.9.9.42.1.2.9.1.6.12 get-type exact entry-op eq entry-val "1" exit-op eq exit-val "2" poll-interval 5$ sudo apt-get install gosa-plugin-ssh gosa-plugin-ssh-schema gosa-plugin-sudo gosa-plugin-sudo-schema
(config-applet)# action 10 syslog msg "Failed echo to 192.168.14.111 "
(config-applet)# action 20 mail server " 192.168.14.16" to "admin@rr.loc" from "Device1" subject "192.168.14.111 not connected" body "192.168.14.111 not connected. Applet SLA-echo-no."$ echo -n t0m88d9eage4as2vi6l6ji04v3 > /tmp/gosa.auth
(config)# event manager applet SLA-echo-yes
(config-applet)# event snmp oid 1.3.6.1.4.1.9.9.42.1.2.9.1.6.20 get-type exact entry-op eq entry-val "2" exit-op eq exit-val "1" poll-interval 5
(config-applet)# action 10 syslog msg "Success echo to 192.168.14.111 "
(config-applet)# action 20 mail server " 192.168.14.16" to "admin@rr.loc" from "Device1" subject "192.168.14.111 connected" body "192.168.14.111 connected. Applet SLA-echo-yes."
# show running-config
# show running-config | begin event
Листинг 1. Настройка IP SLA и EEM для описанного в статье примера
ip sla 12
icmp-echo 192.168.14.111
frequency 300
ip sla schedule 12 life forever start-time now
ip sla enable reaction-alerts // Эта строка добавилась автоматически
event manager applet SLA-echo-no
event snmp oid 1.3.6.1.4.1.9.9.42.1.2.9.1.6.12 get-type exact entry-op eq entry-val "1" exit-op eq exit-val "2" poll-interval 5
action 10 syslog msg "Failed echo to 192.168.14.111 "
action 20 mail server " 192.168.14.16" to "admin@rr.loc" from "Device1" subject "192.168.14.111 not connected" body "192.168.14.111 not connected. Applet SLA-echo-no."
event manager applet SLA-echo-yes
event snmp oid 1.3.6.1.4.1.9.9.42.1.2.9.1.6.12 get-type exact entry-op eq entry-val "2" exit-op eq exit-val "1" poll-interval 5
action 10 syslog msg " Success echo to 192.168.14.111 "
action 20 mail server " 192.168.14.16" to "admin@rr.loc" from "Device1" subject "192.168.14.111 connected" body "192.168.14.111 connected. Applet SLA-echo-yes."
-----------------------------------------------------------------------------------------------------------------
Cоздание образов дисковых массивов. Clonezilla. Часть 2
Алексей Бережной
user@debian:~$ sudo fdisk -l
Command (m for help): p
user@debian:~$ sudo fdisk /dev/sda
Command (m for help): m
Command (m for help): n
p
Partition number (1-4): 2
First cylinder (2622-35681, default 2622):
Last cylinder, +cylinders or +size{K,M,G} (2622-35681, default 35681):
Command (m for help): p
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): L
Hex code (type L to list codes): 7
Command (m for help): p
Command (m for help): w
Command (m for help): q
-----------------------------------------------------------------------------------------------------------------
Экономьте время и деньги. Часть 3. Настройка протокола динамической маршрутизации
Юрий Денисов
#configure terminal
(config)#router ospf 1
(config-router)# ospf router-id 10.0.0.1
(config-router)# network 10.0.0.0 0.0.0.255 area 0.0.0.0
(config-router)# network 0.0.0.0 255.255.255.255 area 0
(config-router)#passive-interface vlanX
(config)#interface vlan2
(config-if)#ip ospf network non-broadcast
(config-router)# neighbor 10.0.0.2 priority 1
(config-router)#redistribute connected
(config-router)#redistribute static
enable ospf
add ospf area=0.0.0.0
add ospf ran=10.0.0.0 mask=255.255.0.0 are=0.0.0.0
add ospf interface =vlan2 network non-broadcast
add ospf neighbour=10.0.0.1 priority=1
add ospf red prot=sta
add ospf red prot=int
set ospf routerid=10.0.0.2
awplus#show ip ospf neighbor
Manager AT8624T> show ospf neighbour
awplus#show ip route
awplus#ping 10.0.2.2
interface vlan1
ip address 10.0.1.1/24
ip ospf network non-broadcast
!
interface vlan2
ip address 10.0.0.1/30
ip ospf network non-broadcast
!
router ospf 1
ospf router-id 10.0.0.1
network 10.0.0.0 255.255.255.252 area 0.0.0.0
network 10.0.1.0 255.255.255.0 area 0.0.0.0
redistribute connected
neighbor 10.0.0.2
151:# IP configuration
152:add ip int=vlan2-0 ip=10.0.0.2 mask=255.255.255.252
153:add ip int=vlan1-0 ip=10.0.2.1 mask=255.255.255.0
261:# OSPF configuration
262:add ospf red prot=int
263:set ospf routerid=10.0.0.2
264:add ospf area=backbone stubarea=off summary=send
265:add ospf range=10.0.0.0 area=backbone mask=255.255.0.0
266:add ospf interface=vlan2-0 area=backbone
267:set ospf interface=vlan2-0 network=non-broadcast
268:add ospf interface=vlan1-0 area=backbone
269:set ospf interface=vlan1-0 network=non-broadcast
270:add ospf neighbour=10.0.0.1 priority=0
271:enable ospf
-----------------------------------------------------------------------------------------------------------------
Maatkit. Программное окружение MySQL
Игорь Савчук
wget http://maatkit.googlecode.com/files/maatkit-7540.tar.gz
tar -xvf maatkit-7540.tar.gz
cd maatkit-7540
perl Makefile.PL
make install
mk-query-advisor /path/to/slow-query.log
mk-query-advisor --type genlog mysql.log
mk-query-digest --type tcpdump --print --no-report | mk-query-advisor
select * from sakila.film_actor join sakila.film using(film_id);
tcpdump -s 384 -i any -nnq -tttt 'tcp port 3306 and (((ip[2:2] - ((ip[0]&0xf)<<2))
- ((tcp[12]&0xf0)>>2)) != 0)' > /path/to/tcp-file.txt
pt-tcp-model /path/to/tcp-file.txt > requests.txt
sort -n -k1,1 requests.txt > sorted.txt
pt-tcp-model --type=requests --run-time=5 sorted.txt > sliced.txt
for f in sliced.txt; do
tail -n +2 "$f" | head -n -1 | awk '{print $2, $3, $7/$4}'
done > usl-input.txt
mk-error-log –resume
mk-archiver --source h=arizona_srv,D=test,t=tbl --dest h=texas_srv --file '/var/log/archive/%Y-%m-%d-%D.%t' --where "1=1" --limit 500 --commit-each
--source h=my_server,D=my_database,t=my_tbl
-----------------------------------------------------------------------------------------------------------------
Утилита Scapy. Основы конструирования сетевых пакетов
Андрей Бражук
$ sudo scapy
>>> a=IP(src="192.168.56.1",dst="192.168.56.2")/ICMP()/"icmpdata"
>>> a.ttl=10
>>> a.ttl
>>> send (a)
>>> sendp (Ether()/a,iface="vboxnet0")
>>> ans,unans=srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP pdst="192.168.56.0/24"),timeout=2,iface="vboxnet0")
>>> for snd,rcv in ans:
... print rcv.summary()
...
>>> ans.summary(lambda (s,r): r.sprintf("%Ether.src% %ARP.psrc%") )
Листинг 1. Утилита перехвата IP-трафика по IP-адресу
#!/usr/bin/python
from scapy.all import *
import sys
if len(sys.argv) != 3:
print "Usage: ",sys.argv[0]," "
sys.exit(1)
ipa=sys.argv[1]
iface=sys.argv[2]
def psv_output(pkt):
if pkt.haslayer(IP):
return pkt.command()
def myfilter(pkt):
if pkt.haslayer(IP):
return ((pkt[IP].dst == ipa) or (pkt[IP].src == ipa))
sniff(prn=psv_output, iface=iface, lfilter=myfilter, store=0)
-----------------------------------------------------------------------------------------------------------------
Борьба с энтропией кода. Несколько полезных советов для решения этой задачи
Антон Околелов
if ($a>5)
$b = 3
$sql = "SELECT count(*) FROM clicks WHERE site_id NOT IN (14,23,36)";
$sitesForTesting = array(14, 23, 36);
public function getName()
-----------------------------------------------------------------------------------------------------------------
Платформа Node. Быстрое знакомство
Валентин Синицын
io.on('connection', function (socket) {
console.log('Client connected');
});
#!/usr/bin/node
npm install <имя пакета>
curl http://npmjs.org/install.sh | sh
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout vt100-key.pem -out vt100-cert.crt
mkdir vt100 && cd vt100
npm install socket.io
var https = require('https'),
fs = require('fs'),
io = require('socket.io'),
tty = require('tty');
const PORT = 8000;
tty.setRawMode(true);
var options = {
key: fs.readFileSync('vt100-key.pem'),
cert: fs.readFileSync('vt100-cert.pem')
};
var srv = https.createServer(options, function(req, resp) {
...
});
var sio = io.listen(srv);
srv.listen(PORT);
sio.sockets.on('connection', function(socket) {
var bash = tty.open("/bin/bash"),
fd = bash[0],
proc = bash[1];
clients++;
fd.setEncoding('utf-8');
fd.on('data', function(data) {
socket.emit('data', data);
});
socket.on('data', function(data) {
fd.write(data);
});
socket.on('disconnect', function() {
proc.kill('SIGHUP');
maybe_terminate();
});
socket.on('kill', function(data) {
socket.emit('end', '\nDisconnected on user request\n');
proc.kill('SIGHUP');
maybe_terminate();
});
})
vt100 - The JavaScript Terminal
Leave
var app = https.createServer(options, function(req, resp) {
var path = require('url').parse(req.url).pathname;
fs.readFile(__dirname + path, function(err, data) {
if (err) {
resp.writeHead(500);
resp.end('Unable to open ' + path);
} else {
resp.writeHead(200);
resp.end(data);
}
});
});
-----------------------------------------------------------------------------------------------------------------