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); } }); }); -----------------------------------------------------------------------------------------------------------------