Squid плюс Active Directory минус Samba Рашид Ачилов auth_param basic program /usr/local/libexec/squid/squid_ldap_auth -v 3 -b "dc=shelton,dc=net" -f sAMAccountName=%s -s sub -P -R -a always -D cn=ldapread,cn=users,dc=shelton,dc=net -w qwertyasdf -h 10.54.200.1 auth_param basic children 5 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 5 minute auth_param basic casesensitive off -f (&(sAMAccountName=%s)(sAMAccountType=805306368)) -f (&(sAMAccountName=%s)(memberOf="CN=Domain Admins*")) auth sufficient pam_unix.so no_warn try_first_pass auth sufficient pam_ldap.so use_first_pass auth_param basic program /usr/local/libexec/squid/pam_auth -o auth_param basic children 5 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 5 minute auth_param basic casesensitive off # host vmfree.shelton.net # host 10.54.200.254 [libdefaults] default_realm = SHELTON.NET dns_lookup_kdc = true dns_lookup_realm = true ticket_lifetime = 24h default_keytab_name = /etc/proxy.keytab clockskew = 300 default_tgs_enctypes = rc4-hmac des-cbc-crc des-cbc-md5 default_tkt_enctypes = rc4-hmac des-cbc-crc des-cbc-md5 permitted_enctypes = rc4-hmac des-cbc-crc des-cbc-md5 [realms] SHELTON.NET = { kdc = 10.54.200.1 kpasswd_server = 10.54.200.1 admin_server = 10.54.200.1 default_domain = shelton.net } [domain_realm] .shelton.net = SHELTON.NET shelton.net = SHELTON.NET # kinit shelton@SHELTON.NET # klist -c /tmp/krb5cc_0 export KRB5_KTNAME=FILE:/etc/squid/HTTP.keytab net ads keytab CREATE net ads keytab ADD HTTP unset KRB5_KTNAME > ktpass -princ HTTP/vmfree.shelton.net@SHELTON.NET -mapuser vproxy -crypto rc4-hmac-nt -ptype KRB5_NT_SRV_HST -pass 123456 -out c:\proxy.keytab # kinit -k -t /etc/proxy.keytab HTTP/vmfree.shelton.net squid_setfib() { KRB5_KTNAME=/etc/proxy.keytab export KRB5_KTNAME sysctl net.fibs >/dev/null 2>&1 || return 0 auth_param negotiate program /usr/local/libexec/squid/squid_kerb_auth -s HTTP/vmfree.shelton.net@SHELTON.NET auth_param negotiate children 5 auth_param negotiate keep_alive on ----------------------------------------------------------------------------------------------------------------- Система OpenVMS. Архаичная система или же современный флагман? Антон Борисов Листинг 1. Конфигурация к эмулятору AlphaVM $ cat alphavm.conf system { # Emulated system type: ds10, ds20, es40. type = ds10; num_cpus = 1; interval_clock_freq = 1000; memory { size = 524; } serial com1 { server = socket; port = 20000; } serial com2 { server = socket; port = 20001; } scsi_disk dka0 { scsi_id = 0; file = '/home/anton/alphavm/disk_rz28d_2gb.dd'; caching = no; write_through = yes; } scsi_cdrom iso { scsi_id = 4; file = '/home/anton/Install/ALPHA084.IMG'; } ether eth0 { server = pcap; interface = 'eth0'; mac_address = 0xAA00AABBCCDD; } } Листинг 2. Список эмулированных устройств в SRM-консоли >>> show devices Листинг 3. Возможные команды в SRM-консоли >>> help rpm -ih charon-axp-freeware*rpm $ alien charon-axp-freeware-as400-4.2-14102.el60.x86_64.rpm # dpkg -i ./charon-axp-freeware-as400_4.2-14103_amd64.deb Листинг 4. Командный файл charon.sh для запуска Charon AXP #!/bin/sh export CHARON_DKA600=/root/ALPHA084.IMG export CHARON_DKA0=/root/dka0.vdisk export LD_LIBRARY_PATH=/opt/charon/lib/axp_freeware/ export CHARON_EWA0=eth1 /opt/charon/bin/axp_freeware/as400_freeware-5.17.14102 # /opt/charon/utils/axp_freeware/mkdskcmd --output dka0.vdisk --disk RZ28B $ /opt/charon/utils/axp_freeware/mkdskcmd --list Листинг 5. Проверяем, какие устройства есть в эмуляторе Charon # ./charon.sh P00>>> show devices boot dka600 ----------------------------------------------------------------------------------------------------------------- Индивидуальный RDP-доступ для администратора Андрей Бусыгин [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp] "PortNumber"=dword:00000d3d [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp2] "PortNumber"=dword:0000117d ----------------------------------------------------------------------------------------------------------------- Определение нагрузки на принтеры Иван Коробко Get-EventLog -LogName *** -Source *** -InstanceId *** -ComputerName *** -Newest *** Get-Help Get-EventLog -full Листинг 1. Чтение данных из журнала событий $a =Get-EventLog -LogName system -Source print -InstanceId 1073741834 $i=1 $Aobj=@() $a |%{ $Tobj=New-Object PSObject $TObj | Add-Member -MemberType NoteProperty -Name "N"-Value ([string]$i) $TObj | Add-Member -MemberType NoteProperty -Name "Дата печати" -Value $_.TimeGenerated.DateTime.tostring() $TObj | Add-Member -MemberType NoteProperty -Name "Имя сотрудника" -Value $_.ReplacementStrings[2] # TObj | Add-Member -MemberType NoteProperty -Name "Сервер печати" -Value $_. MachineName $TObj | Add-Member -MemberType NoteProperty -Name "Принтер" -Value $_.ReplacementStrings[3] $TObj | Add-Member -MemberType NoteProperty -Name "Кол-во страниц" -Value $_.ReplacementStrings[6] $TObj | Add-Member -MemberType NoteProperty -Name "Название" -Value $_.ReplacementStrings[1] $Aobj+=$Tobj $i=$i+1 } $Aobj | Out-GridView Листинг 2. Получение подробной информации о напечатанном документе, пользователе и принтере $GUID_prn="…" # GUID папки с принтерами $GUID_user="…" # GUID папки с пользователями $a =Get-EventLog -LogName system -Source print -InstanceId 1073741834 $i=1 $Aobj=@() $a |%{ # Поиск опубликованного в AD принтера $LDAPobj=[ADSISearcher]"" $LDAPobj.SearchRoot=[ADSI]("LDAP://" -f $GUID_prn) $LDAPobj.Filter = ("(&(objectclass=printqueue)(name={0}-{1}))" -f $_.MachineName.split(".")[0],$_.ReplacementStrings[3]) $result = $LDAPobj.FindOne().getdirectoryentry() # Поиск учетной записи сотрудника $LDAPobj.SearchRoot=[ADSI]("LDAP://" -f $GUID_user) $LDAPobj.Filter = ("(&(objectclass=person)(samaccountname={0}))" -f $_.ReplacementStrings[2]) $resultU = $LDAPobj.FindOne().getdirectoryentry() $Tobj=New-Object PSObject $TObj | Add-Member -MemberType NoteProperty -Name "N" -Value ([string]$i) $TObj | Add-Member -MemberType NoteProperty -Name "Дата печати" -Value $_.TimeGenerated.DateTime.tostring() $TObj | Add-Member -MemberType NoteProperty -Name "Подразделение" -Value $ resultU.properties["department"].value $TObj | Add-Member -MemberType NoteProperty -Name "Должность" -Value $resultU.properties["title"].value $TObj | Add-Member -MemberType NoteProperty -Name "Имя сотрудника" -Value $resultU.properties["description"].value $TObj | Add-Member -MemberType NoteProperty -Name "Комната" -Value $result.Properties["location"].value $TObj | Add-Member -MemberType NoteProperty -Name "Принтер" -Value $result.properties["driverName"].value $TObj | Add-Member -MemberType NoteProperty -Name "Кол-во страниц" -Value $_.ReplacementStrings[6] $TObj | Add-Member -MemberType NoteProperty -Name "Название" -Value $_.ReplacementStrings[1] $TObj | Add-Member -MemberType NoteProperty -Name "Цветность" -Value ([string][int] $result.Properties["printcolor"].value).replace("0","ч/б").replace("1","цветной") $TObj | Add-Member -MemberType NoteProperty -Name "Скорость печати (MAX)" -Value $result.Properties ["printPagesPerMinute"].value $Aobj+=$Tobj $i=$i+1 } $Aobj | Out-GridView Листинг 3. Экспорт данных в Excel (вариант 1) $pathFileCSV="…" $Aobj | Export-Csv -Path $pathFileCSV -Encoding unicode -Delimiter "`t" -Force -NoTypeInformation Листинг 4. Экспорт данных в Excel (вариант 2) $strPath="c:\ReportSpooler.xls" # Создание Excel-файла $a = new-Object -comobject Excel.Application $a.visible = $True $b = $a.Workbooks.Add() $c = $b.Worksheets.Item(1) #Создание шапки файла $Fields="N", "Дата печати", "Подразделение", "Должность", "Имя сотрудника", "Комната", "Принтер", "Кол-во страниц", "Название", "Цветность", "Скорость печати (MAX)" for ($k=0; $k -le $Fields.count; $k++) { $c.Cells.Item(1,$k) =$Fields[$k] } $d = $c.UsedRange $d.Interior.ColorIndex = 19 $d.Font.ColorIndex = 11 $d.Font.Bold = $True $null = $d.EntireColumn.AutoFit() # Определение данных и запись в файл $GUID_prn="…" # GUID папки с принтерами $GUID_user="…" # GUID папки с пользователями $a =Get-EventLog -LogName system -Source print -InstanceId 1073741834 $i=1 $Aobj=@() $a |%{ # Поиск опубликованного в AD принтера $LDAPobj=[ADSISearcher]"" $LDAPobj.SearchRoot=[ADSI]("LDAP://" -f $GUID_prn) $LDAPobj.Filter = ("(&(objectclass=printqueue)(name={0}-{1}))" -f $_.MachineName.split(".")[0],$_.ReplacementStrings[3]) $result = $LDAPobj.FindOne().getdirectoryentry() # Поиск учетной записи сотрудника $LDAPobj.SearchRoot=[ADSI]("LDAP://" -f $GUID_user) $LDAPobj.Filter = ("(&(objectclass=person)(samaccountname={0}))" -f $_.ReplacementStrings[2]) $resultU = $LDAPobj.FindOne().getdirectoryentry() $FieldsValue = ([string]$i), $_.TimeGenerated.DateTime.tostring(), $resultU.properties["department"].value, $resultU.properties["title"].value, $resultU.properties["description"].value, $result.Properties["location"].value, $result.properties["driverName"].value, $_.ReplacementStrings[6], $_.ReplacementStrings[1], ([string][int]$result.Properties["printcolor"].value).replace("0","ч/б").replace("1","цветной"), $result.Properties["printPagesPerMinute"].value for ($k=0; $k -le $Fields.count; $k++) { $c.Cells.Item($i+1,$k+1) =$FieldsValue[$k] } $i=$i+1 } $a.ActiveWorkBook.Saveas($strPath) $c = $null $d = $null $b.Close() $b = $null # $a.Quit() $a = $null ----------------------------------------------------------------------------------------------------------------- Безопасность протокола маршрутизации RIP Андрей Бирюков # ./ass -i eth0 # ./ass -i eth0 -A -v # ass -v -i eth0 -D -P <1 | 2> hostname legitimate.ripd password 8 p@sw0rd enable password 8 Cb/yfFsI.abqs service advanced-vty service password-encryption ! ! key chain dmz_auth key 1 key-string secret_key ! interface eth0 description DMZ_network ip rip authentication mode md5 auth-length old-ripd ip rip authentication key-chain dmz_auth ! router rip version 2 redistribute connected network 192.168.20.0/24 ! line vty exec-timeout 30 0 ! # echo 1 > /proc/sys/net/ipv4/ip_forward # iptables -t nat -A POSTROUTING -o eth0 -s victim_IP -j SNAT --to-source your_IP router rip version 2 default-information originate neighbor 192.168.20.103 route 192.168.66.9/32 # srip -n # nemesis rip -v -c 1 -V 1 -S 192.168.66.102 -D 192.168.66.202 Router(config-if)# ip rip authentication key-chain name-of-chain Router(config-if)# ip rip authentication mode md5 Router(config-router)# distribute-list in [interface-type interface-number] Router(config-router)# neighbor ip-address ----------------------------------------------------------------------------------------------------------------- Под перекрестным огнем. Защита веб-приложений средствами сетевой IDS/IPS Андрей Бражук Листинг 1. Пример конфигурации модуля HTTP_Inspect (фрагмент файла snort.conf) preprocessor http_inspect: global iis_unicode_map unicode.map 1251 preprocessor http_inspect_server: server default profile all ports { 80 8080 } preprocessor http_inspect_server: server 192.168.56.10 profile iis ports { 80 } \ no_alerts preprocessor http_inspect_server: server 192.168.56.11 ports { 80 } \ normalize_headers \ enable_cookie \ normalize_cookies \ extended_response_inspection \ no_alerts Листинг 2. Пример конфигурации HTP (фрагмент файла suricata.yaml) libhtp: default-config: personality: IDS request_body_limit: 3072 response-body-limit: 3072 server-config: - miis: address: [192.168.56.10] personality: IIS_7_5 - strict: address: [192.168.56.11] Листинг 3. Правило ET для определения SQL-инъекций в URI alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"ET WEB_SERVER Possible SQL Injection Attempt SELECT FROM"; flow:established,to_server; content:"SELECT"; nocase; http_uri; content:"FROM"; nocase; http_uri; pcre:"/SELECT.+FROM/Ui"; reference:url,en.wikipedia.org/wiki/SQL_injection; reference:url,doc.emergingthreats.net/2006445; classtype:web-application-attack; sid:2006445; rev:10;) http://ххх.хххх.хх/math/components/com_jce/editor/libraries/js/select.js?version=2.0.20 http://192.168.56.10/index.php?chmod+777+passwd&file=/etc/shadow&shell=/bin/bash Листинг 4. Правило ET для определения веб-вируса CZ32ts alert tcp $EXTERNAL_NET any -> $HOME_NET $HTTP_PORTS (msg:"ET WEB_SERVER SQL Injection Attempt (Agent CZ32ts)"; flow:to_server,established; content:"User-Agent|3a| CZ32ts|0d 0a|"; fast_pattern:only; nocase; http_header; reference:url,doc.emergingthreats.net/2009029; reference:url,www.Whitehatsecurityresponse.blogspot.com; classtype:web-application-attack; sid:2010621; rev:5;) ----------------------------------------------------------------------------------------------------------------- Установка Suricata с поддержкой технологии CUDA Юрий Денисов apt-get install libpcre3 libpcre3-dbg libpcre3-dev build-essential autoconf automake libtool libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libcap-ng-dev libcap-ng0 make flex bison git linux-headers-2.6.32-5-amd64 pkg-config coccinelle libmagic-dev chmod 655 cudatoolkit_4.2.9_linux_64_ubuntu11.04.run sudo ./cudatoolkit_4.2.9_linux_64_ubuntu11.04.run chmod 655 devdriver_4.2_linux_64_295.41.run sudo ./devdriver_4.2_linux_64_295.41.run git clone git://phalanx.openinfosecfoundation.org/oisf.git ./autogen.sh ./configure --enable-cuda --with-cuda-includes=/usr/local/cuda/include --with-cuda-libraries=/usr/local/cuda/lib64/ make && make install apt-get install oinkmaster url = http://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz mkdir /etc/suricata/rules oinkmaster -C /etc/oinkmaster.conf -o /etc/suricata/rules ----------------------------------------------------------------------------------------------------------------- Генерация штрих-кода. Переводим текст в кривые Иван Коробко Листинг 1. Тело EPS-файла … %ADOEndClientInjection: PageSetup End "AI11EPS" %%EndPageSetup 1 -1 scale 0 -1 translate pgsv [1 0 0 1 0 0 ]ct gsave np gsave 0 0 mo 0 8.58984 li 6.48633 8.58984 li 6.48633 0 li cp clp [1 0 0 1 0 0 ]ct 1.13672 7.57617 mo 3.27539 7.57617 li 3.64258 7.57617 3.90039 7.5625 4.04883 7.53516 cv 4.31055 7.48828 4.5293 7.41016 4.70508 7.30078 cv 4.88086 7.19141 5.02539 7.03223 5.13867 6.82324 cv 5.25195 6.61426 5.30859 6.37305 5.30859 6.09961 cv 5.30859 5.7793 5.22656 5.50098 5.0625 5.26465 cv 4.89844 5.02832 4.6709 4.8623 4.37988 4.7666 cv 4.08887 4.6709 3.66992 4.62305 3.12305 4.62305 cv 1.13672 4.62305 li 1.13672 7.57617 li cp 1.13672 3.60938 mo 2.99414 3.60938 li 3.49805 3.60938 3.85938 3.57617 4.07813 3.50977 cv 4.36719 3.42383 4.58496 3.28125 4.73145 3.08203 cv 4.87793 2.88281 4.95117 2.63281 4.95117 2.33203 cv 4.95117 2.04688 4.88281 1.7959 4.74609 1.5791 cv 4.60938 1.3623 4.41406 1.21387 4.16016 1.13379 cv 3.90625 1.05371 3.4707 1.01367 2.85352 1.01367 cv 1.13672 1.01367 li 1.13672 3.60938 li cp 0 8.58984 mo 0 0 li 3.22266 0 li 3.87891 0 4.40527 .0869141 4.80176 .260742 cv 5.19824 .43457 5.50879 .702148 5.7334 1.06348 cv 5.95801 1.4248 6.07031 1.80273 6.07031 2.19727 cv 6.07031 2.56445 5.9707 2.91016 5.77148 3.23438 cv 5.57227 3.55859 5.27148 3.82031 4.86914 4.01953 cv 5.38867 4.17188 5.78809 4.43164 6.06738 4.79883 cv 6.34668 5.16602 6.48633 5.59961 6.48633 6.09961 cv 6.48633 6.50195 6.40137 6.87598 6.23145 7.22168 cv 6.06152 7.56738 5.85156 7.83398 5.60156 8.02148 cv 5.35156 8.20898 5.03809 8.35059 4.66113 8.44629 cv 4.28418 8.54199 3.82227 8.58984 3.27539 8.58984 cv 0 8.58984 li cp false sop Листинг 2. Шаблон для рисования символа $t="0 0 0 1 setcmykcolor`n" # Установка цвета линии $t+=" " + [string]$k + " " + [string]$k + " scale`n" # Размер шрифта $t+=[string]($W) + " setlinewidth`n" # Установка ширины линии $t+="newpath`n" # Новый контур $t+=[string](Зн + $X) + " " + [string]( Зн + $Y) + " moveto`n" $t+=[string]( Зн + $X) + " " + [string]( Зн + $Y) + " lineto`n" $t+=[string]( Зн+$X) + " " + [string]( Зн+$Y) + " " + [string]( Зн+$X) + " " + [string]( Зн+$Y) + " " + [string]( Зн+$X) + " " + [string]( Зн+$Y) + " curveto`n" $t+=" closepath`n" # Завершение контура $t+=" fill`n" # Заливка фигуры $t+=" stroke`n" # Рисование символа $t+=" " + [string](1/$k) + " " + [string](1/$k) + " scale`n" $t+=[string]( Зн + $X) + " " + [string]( Зн + $Y + $G) + " moveto`n" $t+=[string]( Зн + $X) + " " + [string]( Зн + $Y + $G) + " lineto`n" $t+=[string]( Зн + $X) + " " + [string]( Зн + $Y + $G) + " " + [string]( Зн + $X) + " " + [string]( Зн + $Y + $G) + " " + [string]( Зн + $X) + " " + [string]( Зн + $Y + $G) + " curveto`n" Листинг 3. Поиск нужного подставляемого символа function symbol { $S=$args[0][0] # символ $X=$args[0][1] # X-координата начала линии $Y=$args[0][2] # Y-координата начала линии $W=$args[0][3] # толщина $K=$args[0][4] # увеличение switch ([int]$S) { 73 #"I" { … } 83 #"S" { … } # Поиск символа по его ASCII-коду 66 #"B" { $t="0 0 0 1 setcmykcolor`n" # Установка цвета линии $t+=" " + [string]$k + " " + [string]$k + " scale`n" # Размер шрифта $t+=[string]($W) + " setlinewidth`n" # Установка ширины линии $t+="newpath`n" # Новый контур $t+=[string]( Зн + $X) + " " + [string]( Зн + $Y) + " moveto`n" $t+=[string]( Зн + $X) + " " + [string]( Зн + $Y) + " lineto`n" $t+=[string]( Зн+$X) + " " + [string]( Зн+$Y) + " " + [string]( Зн+$X) + " " + [string]( Зн+$Y) + " " + [string]( Зн+$X) + " " + [string]( Зн+$Y) + " curveto`n" $t+=" closepath`n" # Завершение контура $t+=" fill`n" # Заливка фигуры $t+=" stroke`n" # Рисование символа $t+=" " + [string](1/$k) + " " + [string](1/$k) + " scale`n" } 78 #"N" { … } … } ----------------------------------------------------------------------------------------------------------------- Социальные приложения. Новый подход к разработке Александр Календарев import "buildings.proto"; import "tanks.proto"; import "nests.proto"; import "resourses.proto"; message UserInfo { required int id = 1; SocialId { required int id = 1; } required SocialId social_id = 2; enum AccessCode { GAMER = 0; BANNED = 1; ADMIN = 2; TESTER = 3; } required AccessCode accessCode = 3 [default = GAMER]; required int rate = 4; repeated Resource resources nests = 5; repeated Nest nests = 6; repeated Tank tanks = 7; repeated Building buildings = 8; } ----------------------------------------------------------------------------------------------------------------- HTML5 – учимся общаться Кирил Сухов window.addEventListener("message", messageHadler,false); function messageHadler(e){ if( e.origin == "http://htmotehost"){ alert(e.origin+" "+e.data); } }
Сообщения:
content.innerHTML = content.innerHTML+"
"+event.origin + ": " + event.data; var win = e.source; win.postMessage( "Сообщение получено тчк целую тчк ваш фрейм", "http://localhost" ); window.addEventListener("message", postListener,false); function postListener(e){ console.log(e.data); } id: 12345\n retry: 100\n data: first line\n data: second line\n data: last line\n \n
source.addEventListener( 'message', function (e) { document.getElementById('timer').innerHTML = e.data; }, false); ----------------------------------------------------------------------------------------------------------------- Начни сначала, или Что должен знать системный администратор Константин Кондаков for i in `seq 5 9`; do scp -pr -i ~/.ssh/id_dsa user@10.89.18.${i}:/data02/tomcatlogs/test.log.2012-02-21 ./10.89.18.${i}.test-ws.log.2012-02-21; done mv -f ${TMP_BUILD}/testApp/App/web.xml ${TMP_BUILD}/coldfusion/WEB-INF || mail -s " Unable to move web.xml from App/WEB-INF to WEB-INF: `date +%D-time:%H:%M` ${TMP_BUILD} " ${EMAIL} rsync -CHSalvz --progress --numeric-ids -e ssh" /sata/vm5GOLD/ root@192.168.20.30:/backup/ find /data/logs/httpd/vlogs/ -name "*.gz" -ctime +180 -exec rm -f {} \; find . -type f | xargs ls -s | sort -rn | awk '{size=$1/1024; printf("%dMb %s\n", size,$2);}' | head history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head A=`ifconfig -a | grep -2 'eth0:0' | grep inet | awk '{print $2'} | awk -F: '{print $2'}` && sed -i "s/Port 80/Listen $A:80/g" /usr/local/apache/conf/httpd.conf ls -l | sed -e 's/--x/1/g' -e 's/-w-/2/g' -e 's/-wx/3/g' -e 's/r--/4/g' -e 's/r-x/5/g' -e 's/rw-/6/g' -e 's/rwx/7/g' -e 's/---/0/g' args="$(echo $URL | cut -d\? -f2 | tr '&' '\n' | grep -E '(^q=|^sid=|^p=|query=|item=|ask=|name=| topic=)' | sed -e 's/+/ /g' -e 's/%20/ /g' -e 's/"//g' | cut -d= -f2)" dssh "grep -c '20/Apr/2012:06' /data/logs/httpd/vlogs/*/2012/04/20/*.log " | awk ' BEGIN {FS = ":" } { sum +=$2 } END { print sum }' watch "netstat -plan|grep :80|awk {'print \$5'} | cut -d: -f 1 | sort | uniq -c | sort -nk 1" nc -w 5 -v -l -p 80 < file.ext # route del -net default gw 192.168.40.1 dev eth1 # route add -net default gw 192.168.20.1 dev eth0 wget --random-wait -r -p -e robots=off -U mozilla http://www.example.com dig -t NS redhat.com +noall +answer ssh-keygen -t dsa -N '' # cat ~/.ssh/id_dsa.pub | ssh you@host-server "cat - >> ~/.ssh/authorized_keys2" # ssh-keygen -l -f /etc/ssh/ssh_host_dsa_key.pub # For DSA key (default) # ssh linda rsync -az -e 'ssh -p 20022' /home/colin/ user@server:/backup/colin/ # ssh -L localport:desthost:destport user@gate // localhost – это локальный компьютер, а gate – компьютер «посередине», в роли посредника # ssh -R destport:desthost:localport user@gate // реверс-тунннель # ssh -N -L2001:localhost:80 somemachine // простейший «прокси сервер» // Cтатистика процессов # top // Показ статистики по процессору # mpstat 1 // Показ статистики по виртуальной памяти # vmstat 2 // Показ статистики по I/O (системе ввода-вывода) # iostat 2 tar xzvf && ./configure &&make && make install ./configure –with-prefix=/usr/local ----------------------------------------------------------------------------------------------------------------- От Google до Goldman Sachs. Ищем работу своей мечты за рубежом. Часть 2 Игорь Савчук
    "; while ( $row=mysql_fetch_assoc($test_result) ) echo "
  1. {$row[test_row]}
  2. "; echo "

"; ?> ----------------------------------------------------------------------------------------------------------------- Представление чисел в памяти ЭВМ. Часть 2. Числа с плавающей точкой/запятой по стандарту IEEE754 Павел Закляков int a=1; float b=0.5; $ cat float_representation.c #include #include void PrintByte (void * pnt) { char *p=(char *) pnt; int unit=128; int c; for (c=0;c<8;c++) { if ( (*p) & (unit) ) { printf("1"); } else { printf("0"); } unit>>=1; } } void PrintByBitView(void * pnt, int n) { char * p=( (char *)pnt); char * last_byte_address; last_byte_address=p-1+n; for (;p<=last_byte_address;p++) { PrintByte(p); printf(" "); } printf("\n"); } void PrintFloatView(void * pnt) { int t; t=*(int *)pnt; int i; for (i=31;i>=0;i--) { printf("%u",t>>i&1); if(i==32-1) printf(" "); if(i==32-(1+8)) printf(" "); } printf("\n"); } void PrintHexView(void * pnt, int n) { unsigned short int i; char *a; for (i=0;i=2) { a=strtof(argv[1],NULL); printf(" Исходное число: %f\n",a); printf("IEEE-754 формат: "); PrintFloatView (&a); printf(" Двоичный вид: "); PrintByBitView (&a,sizeof(float)); PrintHexView (&a,sizeof(float)); } else { printf ("Введите число вторым параметром.\n"); } } $ gcc float_representation.c &&./a.out 36.6 ----------------------------------------------------------------------------------------------------------------- Проект LibrePlan. Свободная система управления проектами Сергей Яремчук $ sudo add-apt-repository ppa:libreplan/ppa $ sudo apt-get update $ sudo apt-get install libreplan $ wget http://downloads.sourceforge.net/project/libreplan/files/LibrePlan/libreplan_1.2.1-1_amd64.deb # dpkg -i libreplan_1.2.1-1_amd64.deb # apt-get install –-f -----------------------------------------------------------------------------------------------------------------