Виртуализация в стиле Linux Containters. Популярный тренд или насущная необходимость? Антон Борисов Листинг 1. Производим поиск OpenVZ в репозитории Ubuntu/ARM # uname -a # aptitude search vz Листинг 2. Установка LXC на платформе ARMv7 root@trimslice:~# aptitude install lxc Листинг 3. Проверяем наличие примонтированной cgroup root@trimslice:~# mount cgroup /cgroup cgroup rw 0 0 Листинг 4. Создаем контейнер LXC root@trimslice:~# lxc-create -h root@trimslice:~# lxc-create -n LXC_Machine1 Листинг 5. Создаем с помощью debootstrap файловую систему контейнера root@trimslice:/var/lib/lxc/LXC_Machine1/rootfs# debootstrap squeeze ./squeeze-chroot http://ftp.us.debian.org/debian Листинг 6. Формируем конфигурационный файл для контейнера 1) lxc.utsname = LXC_Machine1 2) lxc.tty = 4 3) lxc.network.type = veth 4) lxc.network.flags = up 5) lxc.network.link = br0 6) lxc.network.name = eth0 7) lxc.network.mtu = 1500 8) lxc.network.ipv4 = 192.168.210.0/24 9) lxc.rootfs = /var/lib/lxc/LXC_Machine1/rootfs 10) lxc.mount = /var/lib/lxc/LXC_Machine1/m1.fstab 11) lxc.cgroup.devices.deny = a 12) # /dev/null and zero 13) lxc.cgroup.devices.allow = c 1:3 rwm 14) lxc.cgroup.devices.allow = c 1:5 rwm 15) # consoles 16) lxc.cgroup.devices.allow = c 5:1 rwm 17) lxc.cgroup.devices.allow = c 5:0 rwm 18) lxc.cgroup.devices.allow = c 4:0 rwm 19) lxc.cgroup.devices.allow = c 4:1 rwm 20) # /dev/{,u}random 21) lxc.cgroup.devices.allow = c 1:9 rwm 22) lxc.cgroup.devices.allow = c 1:8 rwm 23) # /dev/pts/* 24) lxc.cgroup.devices.allow = c 136:* rwm 25) lxc.cgroup.devices.allow = c 5:2 rwm 26) # rtc 27) lxc.cgroup.devices.allow = c 254:0 rwm Листинг 7. Формируем файл монтирования контейнера none /var/lib/lxc/LXC_Machine1/rootfs/dev/pts devpts defaults 0 0 none /var/lib/lxc/LXC_Machine1/rootfs/proc proc defaults 0 0 none /var/lib/lxc/LXC_Machine1/rootfs/sys sysfs defaults 0 0 none /var/lib/lxc/LXC_Machine1/rootfs/dev/shm tmpfs defaults 0 0 # root@trimslice:/var/lib/lxc/LXC_Machine2# chroot ./rootfs/ # aptitude install rcconf nginx # lxc-stop --name LXC_Machine2 # lxc-ps --name LXC_Machine2 ----------------------------------------------------------------------------------------------------------------- Установка squid с доступом в Интернет по группам Active Directory на CentOS 6.0 Григорий Антропов [root@srv1 ~]# yum install squid [root@srv1 ~]# chkconfig squid on Листинг 1. Конфигурационный файл squid # Параметры аутентификации # -------------------------------------------------------- # Использовать аутентификацию NTLM auth_param ntlm program /usr/lib64/squid/fakeauth_auth #auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp auth_param ntlm children 10 auth_param ntlm keep_alive on # ACL – списки контроля доступа #------------------------------ # ACL для работы самого squid acl manager proto cache_object acl localhost src 127.0.0.1/32 acl localhost src ::1/128 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 acl to_localhost dst ::1/128 # ACL известных портов acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl ICQ_ports port 5190 # ICQ port acl CONNECT method CONNECT # ACL локальные сети acl localnet src 172.0.0.0/8 # ACL внешние, определяются дополнительным хелпером, # использовать участие в группах Active Directoy (AD) # с помощью wbinfo_group.pl external_acl_type ad_group ttl=30 negative_ttl=30 %LOGIN /usr/lib64/squid/wbinfo_group.pl # Группа, которой разрешено все (имя группы allow_all в AD) acl allow_all external ad_group allow_all # Группа, которой разрешено все, за исключением списка # (имя группы allow_without в AD) acl allow_without external ad_group allow_without # Группа, которой разрешен только список сайтов # (имя группы allow_only в AD) acl allow_only external ad_group allow_only # Группа, которой запрещено все (имя группы deny_all в AD) acl deny_all external ad_group deny_all # ACL, настаиваемые вами (custom ACL) # Требовать аутентификацию acl auth_user proxy_auth REQUIRED # Список разрешенных доменов и IP-адресов для механизма # NCSI и обновлений Windows и для других обновлений # и программ, когда идентификационные данные не передаются acl allow_anonymous_domains dstdomain "/etc/squid/allow_anonymous_domains.txt" # Список разрешенных доменов для ACL allow_only acl allow_only_domains dstdomain "/etc/squid/allow_only_domains.txt" # Список запрещенных доменов acl deny_domains dstdomain "/etc/squid/deny_domains.txt" # Список запрещенных IP-адресов, формируются вспомогательным # сценарием site2ip из списка /etc/squid/deny_domains.txt acl deny_IP dstdomain "/etc/squid/deny_IP_byscript.txt" # Запрещенные IP-адреса, которые добавляются руками, # без использования сценария site2ip acl deny_IP_man dstdomain "/etc/squid/deny_IP_man.txt" # Правила доступа squid #------------------------------ # Разрешить доступ cache менеджера с локального компьютера, # запретить из любых других мест http_access allow manager localhost http_access deny manager # Запретить доступ к неизвестным портам, не перечисленным # в acl Safe_port http_access deny !Safe_ports # Запретить доступ с использованием SSL к портам не 443 http_access deny CONNECT !SSL_ports # Разрешить NCSI механизм Windows и анонимный доступ # к сайтам Microsoft и др. – к списку доменов # в ACL allow_anonymous_domains http_access allow localnet allow_anonymous_domains # Запретить доступ в Интернет ACL deny_all http_access deny auth_user deny_all # Разрешить доступ аутентифицированным пользователям # из локальной сети для ACL allow_all везде http_access allow localnet auth_user allow_all !allow_only !allow_without # Разрешить доступ аутентифицированным пользователям # из локальной сети для ACL allow_without везде, # кроме ACL deny_domains, deny_IP, deny_IP_man http_access allow localnet auth_user allow_without !allow_only !deny_domains !deny_IP !deny_IP_man # Разрешить доступ аутентифицированным пользователям # из локальной сети для ACL allow_only к списку доменов # в ACL allow_only_domains http_access allow localnet auth_user allow_only allow_only_domains # В заключение запретить все другие доступы к этому прокси http_access allow localhost http_access deny all # Порт squid #------------------------------ # Squid слушает на этом порту http_port 3128 # Расположение файлов журналов #------------------------------ access_log /var/log/squid/access.log squid cache_log /var/log/squid/cache.log cache_store_log /var/log/squid/store.log # Опции настройки cache (оставлены по умолчанию) #------------------------------ refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern (cgi-bin|\?) 0 0% 0 refresh_pattern . 0 20% 4320 # Расположение каталога сообщений squid об ошибке доступа # для пользователей #------------------------------ error_directory /usr/share/squid/errors/ru # Почтовый адрес техподдержки squid для обращений будет # указан в сообщениях об ошибке доступа #----------------------------- cache_mgr info@example.ru auth_param ntlm program /usr/lib64/squid/fakeauth_auth #auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp usermod -G wbpriv squid external_acl_type ad_group ttl=30 negative_ttl=30 %LOGIN /usr/lib64/squid/wbinfo_group.pl [root@srv1 ~]# echo "DOMAIN\UserName Group" | /usr/lib64/squid/wbinfo_group.pl [root@srv1 ~]# chmod +x /opt/scripts/squid/site2ip/site2ip Листинг 2. Файл /etc/squid/allow_anonymous_domains.txt # Домены, к которым разрешен анонимный доступ # (обновления Microsoft и др. обновления, когда Windows # не передает учетные записи пользователя) # Microsoft: www.msftncsi.com .microsoft.com .windowsupdate.com # Google tools.google.com dl.google.com cache.pack.google.com gpdl.google.com # Mc Afee update.nai.com ftp.nai.com # itunes .itunes.apple.com .verisign.com # Adobe .adobe.com .geotrust.com .thawte.com # Maps yandex .maps.yandex.net Листинг 3. Файл /etc/squid/allow_only_domains.txt # Список разрешенных доменов для acl allow_only .google.ru .yandex.u .yahoo.ru Листинг 4. Файл /etc/squid/deny_domains.txt # Список запрещенных доменов для acl allow_without .mimo.ru .media.ru Листинг 5. Файл /etc/squid/deny_IP_man.txt # Список запрещенных IP-адресов acl allow_without # в добавление к списку, формируемому сценарием 192.168.9.13 Листинг 6. Сценарий преобразования имен сайтов в IP-адреса - site2ip #!/bin/bash # # Описание: этот сценарий служит для использования совместно со squid # # На базе текстового файла, содержащего список запрещенных доменов, # создается текстовый файл, содержащий IP-адреса этих доменов # # Затем выполняется команда squid reload. # # Замечания: все входные переменные, необходимые для сценария, # должны располагаться в файле с именем . # Этот файл должен находиться в том же каталоге, в котором находится сам сценарий # . # PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr:/local/sbin export PATH # Получить имя сценария и полный путь к сценарию scriptname=$(basename $0) tmp=$(readlink -f $0) scriptpath=$(dirname "${tmp}") # Прочитать переменные из конфигурационного файла . "${scriptpath}/${scriptname}.conf" if [ ! $? -eq 0 ] ; then errmsg="$(date)\n!!! Ошибка: файл ${scriptpath}/${scriptname}.conf имеет ошибки синтаксиса или отсутствует\n. Проверьте файл и запустите сценарий снова\n---" echo -e ${errmsg} >> "${scriptpath}/${scriptname} -configuration.error" echo -e ${errmsg} exit 1 fi # Проверить наличие исходного файла if [ ! -f "${insites}" ]; then errmsg="$(date)\n!!! Ошибка: исходный файл ${insites} не найден\n. Проверьте правильность задания переменной insites=${insites}\n---" echo -e ${errmsg} >> "${scriptpath}/${scriptname} -configuration.error" echo -e ${errmsg} exit 1 fi # Проверить правильность пути к демону squid if [ ! -f ${squidd} ]; then errmsg="$(date)\n!!! Ошибка: неверный путь к демону squid ${squidd}\n. Проверьте правильность задания переменной squidd=${squidd}\n---" echo -e ${errmsg} >> "${scriptpath}/${scriptname} -configuration.error" echo -e ${errmsg} exit 1 fi # Создать каталог для log-файлов logdir="${scriptpath}/log" if [ ! -d "${scriptpath}/log" ]; then mkdir "${scriptpath}/log" if [ "$?" -ne 0 ] ; then errmsg="$(date)\n!!! Ошибка: не могу создать каталог ${scriptpath}/log\n. Проверьте права доступа к каталогу ${scriptpath}\n---" echo -e $errmsg >> "${scriptpath}/${scriptname} -configuration.error" echo -e $errmsg exit 1 fi fi # Начало процесса (для записи в logfile) begintm=$(date) # Log-файл filedate=$(date +%Y%m%d-%H%M) report="${logdir}/${scriptname}-${filedate}.txt" # Прочитать исходный файл и разрешить имена tolog="" # сообщение в log-файл о результатах разрешения имен ipresolved="" while read line do # Удалить строки комментария l=$(echo $line | sed "s/\#.*//") # Обрабатывать только не пустые строки if [ ! -z ${l} ]; then # Удалить первую точку, если она есть nfd=$(echo $l | sed "s/^\.//") # Разрешить имя в IP resolved=$(dig +short "${nfd}") # Строка для записи в log-файл tolog="${tolog}${nfd} -> ${resolved}\n" # Строка с разрешенными IP-адресами, в которой могут # быть cname ipresolved="${ipresolved} ${resolved}" fi done < "${insites}" # Сделать из строки массив и дальше работать с ним aipresolved=(${ipresolved}) # Удалить из массива cname и оставить только IP i=0 for t in ${aipresolved[*]} do # удалить cname t1=$(echo ${t} | grep '[0-9]\+') if [ ! -z "${t1}" ]; then # Массив ipd без пустых строк ipd["${i}"]="${t1}" let i=i+1 fi done # Массив aipresolved больше не нужен, удалить его unset aipresolved # Копировать массив ipd в массив ip ip=(${ipd[*]}) # Если встречаются одинаковые IP, в массиве ip заменить их словом dubl j=0 k=0 for t in ${ipd[*]} do let k=j+1 while [ "${k}" -lt "${i}" ]; do t1="${ip["${k}"]}" if [ "${t}" == "${t1}" ]; then ip["${k}"]="dubl" fi let k=k+1 done let j=j+1 done # Массив ipd больше не нужен, удалить его unset ipd # Записать результат в выходной файл echo "# Last modify: $(date)" > "${outip}" if [ ! $? -eq 0 ] ; then errmsg="$(date)\n!!! Ошибка: не могу записать в файл ${outip}\n. Проверьте правильность задания переменной outip=${outip} и права доступа к файлу\n---" echo -e ${errmsg} >> "${scriptpath}/${scriptname} -configuration.error" echo -e ${errmsg} exit 1 fi # Записать в выходной файл значения из массива ip # без значений dubl i=0 for t in ${ip[*]} do if [ ! "${t}" == "dubl" ]; then echo "${t}" >> "${outip}" let i=i+1 fi done # Перечитать конфигурацию squid $(${squidd} reload > "${scriptpath}/reload.txt" 2>&1) # Проверить размер файла reload.txt, если не 0, записать # предупреждение в log-файл sz=$(stat -c %s "${scriptpath}/reload.txt") if [ ! "${sz}" -eq 0 ] ; then squidreload="!!! Ошибка: файлы конфигурации squid имеют ошибки.\n!!! Смотрите файл ${scriptpath}/reload.txt" echo -e ${squidreload} else squidreload="Перезагрузка конфигурации squit: успешно" fi # Удалить старые log-файлы $(find ${logdir} -maxdepth 1 -type f -mtime "+${logdays}" -exec rm {} \;) # Записать результат работы в log-файл echo -e "Начало процесса: ${begintm}" > "${report}" echo -e "Разрешения имен в IP:" >> "${report}" echo -e "${tolog}" >> "${report}" echo -e "---" >> "${report}" echo -e "${squidreload}" >> "${report}" echo -e "---\n" >> "${report}" echo -e "Окончание процесса: `date`" >> "${report}" Листинг 7. Конфигурационный файл к сценарию site2ip.conf # Конфигурационный файл входных переменных к сценарию # site2ip. Этот файл должен содержать только комментарии # и переменные, необходимые для работы сценария, # с использованием синтаксиса bash # Путь к файлу запрещенных сайтов squid (входной файл) # Пример: insites="/etc/squid/deny_domains.txt" insites="/etc/squid/deny_domains.txt" # Путь к файлу запрещенных IP-адресов squid, который будет # создан сценарием # Пример: outip="/etc/squid/deny_IP.txt" outip="/etc/squid/deny_IP_byscript.txt" # Путь к демону squid # Пример: squidd="/etc/init.d/squid" squidd="/etc/init.d/squid" # Время жизни файлов журнала в днях. # Файлы журналов создаются в каталоге log. Файлы старше # logdays будут удалены # Пример: logdays=30 logdays=7 # Запретить доступ в Интернет ACL deny_all http_access deny auth_user deny_all # Разрешить доступ аутентифицированным пользователям из локальной сети для ACL allow_all везде http_access allow localnet auth_user allow_all !allow_only !allow_without # Разрешить доступ аутентифицированным пользователям # из локальной сети для ACL allow_without везде, # кроме ACL deny_domains, deny_IP, deny_IP_man http_access deny all winbind cache time = 480 [root@srv1 ~]# service winbind stop [root@srv1 ~]# rm -f /var/lib/samba/*.tdb /var/lib/samba/*.ldb [root@srv1 ~]# service winbind start [root@srv1 ~]# service squid start weekly rotate 5 daily rotate 7 Листинг 8. Вспомогательный сценарий logtime_helper #!/bin/bash # # Вспомогательный сценарий для squid # Конвертирует файл squid access.log c временем, заданным # в формате UNIX time в файл с обычным форматом времени # if [ $# -lt 2 ]; then echo "Применение:" echo "logtime-helper путь_к_файлу_SQID_access.log путь_к_создаваемому_файлу_с_откорректированным_временем" exit 1 fi if [ ! -f "${1}" ]; then echo "Отсутсвует файл {$1}" exit 1 fi ex=$(which gawk) if [ ${2} == '' ]; then echo "отсутсвует gawk" fi gawk '{$1=strftime("%c" , $1)}1' $1 > $2 if [ $? -eq 0 ]; then echo "Результат записан в файл ${2}" else echo "Не могу записать результат в файл ${2}, проверьте путь и права доступа" fi ----------------------------------------------------------------------------------------------------------------- Подключаем клиентские ПК с OC Windows к беспроводной сети, защищенной WPA-Enterprise Михаил Кондрин # kadmin -l list -l guest #!/usr/bin/tclsh set kadmin "/usr/sbin/kadmin" set kt /etc/raddb/certs/xxx set ktparser /etc/raddb/certs/ktparser.tcl set radprinc radius/[exec hostname -f] set radkeytab /etc/krb5.keytab set principal [string tolower [lindex [split [lindex $argv 0] "@"] 0]] set challenge [binary format H* [lindex $argv 1]] set responce [binary format H* [lindex $argv 2]] package require SASL package require SASL::NTLM package require md4 proc ntlm1 { hash nonce } { set res "" foreach key [::SASL::NTLM::CreateDesKeys $hash] { append res [DES::des -dir encrypt -weak -mode ecb -key $key $nonce] } return $res } set ll [exec ${kadmin} -p ${radprinc} -K ${radkeytab} ext_keytab -k $kt $principal] catch {radius/post.hppi.troitsk.ru set ff [open ${kt} RDONLY] source ${ktparser} set key [parse_keytab $ff] } close $ff file delete ${kt} if { [string equal [ntlm1 $key $challenge] $responce] } { puts -nonewline "NT_KEY: [md4::md4 -hex $key]" exit 0 } else { puts "Error" exit 1 } radius/server.example.ru get #ntlm_auth = "/path/to/ntlm_auth --request-nt-key .... ntlm_auth = "/etc/raddb/certs/heim_ntlm_auth.tcl %{mschap:User-Name:-00} %{mschap:Challenge:-00} %{mschap:NT-Response:-00}" proc parse_keytab { ff } { proc read_octet { stream } { binary scan [read $stream 2] S1 length set octet [read $stream $length] return [list $length $octet] } #read file version magic. Should be 0x502. if { ![string equal [read $ff 2] \x05\x02] } { error "Unknown file format!" } while {![eof $ff]} { #read entry length set size [read $ff 4] #number of parts separated by slashes #in principal name binary scan [read $ff 2] S1 nparts #discard realm name read_octet $ff #discard principal's name parts for {set i 0} {$i < $nparts } {incr i } { read_octet $ff } #discard name type, timestamp and #one-byte key version number read $ff 9 #read encoding type and check that #it is a NT-hash binary scan [read $ff 2] S1 enc_type if { $enc_type == 23 } { #this is arcfour-hmac-md5! #Read and process key block set keyblock [read_octet $ff] if { [lindex $keyblock 0] != 16 } { #This shouldn't happen error "Wrong length of arcfour-hmac-md5 key!" } else { #return the key return -code 0 [lindex $keyblock 1] } } else { #this is not arcfour-hmac-md5! discard #keyblock read_octet $ff #discard 4-byte key version number #and continue read $ff 4 } } } phase2="auth=MSCHAPV1" eap=PEAP phase2="autheap=MSCHAPV2" ----------------------------------------------------------------------------------------------------------------- Централизованное хранение журналов Максим Сафонов # yum install mysql-server php php-mysql php-gd httpd # chkconfig httpd on # chkconfig mysqld on # service httpd start # service mysqld start # iptables -I INPUT -p tcp --dport 80 -j ACCEPT # iptables -I INPUT -p tcp --dport 514 -j ACCEPT # iptables -I INPUT -p udp --dport 514 -j ACCEPT # service iptables save # yum install rsyslog rsyslog-mysql # mysql < /usr/share/doc/rsyslog-mysql-4.6.2/createDB.sql # mysql mysql> сreate database loganalyzer mysql> grant all privileges on loganalyzer.* to loganalyzer@"localhost" identified by "1234567" with grant option; mysql> grant all privileges on Syslog.* to loganalyzer@"localhost" identified by "1234567 with grant option; mysql> exit; # nano /etc/rsyslog.conf $Modload ommysql *.* :ommysql:127.0.0.1,Syslog,loganalyzer,1234567 $ModLoad imudp.so $UDPServerRun 514 $ModLoad imtcp.so $InputTCPServerRun 514 # service rsyslog restart # cd /var/www/html # wget http://download.adiscon.com/loganalyzer/loganalyzer-3.4.1.tar.gz # tar xzvf ./loganalyzer-3.4.1.tar.gz # cp -r ./loganalyzer-3.4.1/src/* ./ # chmod +x ./loganalyzer-3.4.1/contrib/configure.sh # ./loganalyzer-3.4.1/contrib/configure.sh facility:=SECURITY,CRON @echo off if "%PROCESSOR_ARCHITECTURE%" == "AMD64" ( copy /y "%~dp064-bit\evtsys*" %windir%\system32\ copy /y "%~dp0evtsys.cfg" %windir%\system32\evtsys.cfg "%~dp064-bit\evtsys.exe" -i -h example.org -p 514 net start EvtSys ) else ( copy /y "%~dp032-bit\evtsys*" %windir%\system32\ copy /y "%~dp0evtsys.cfg" %windir%\system32\evtsys.cfg "%~dp032-bit\evtsys.exe" -i -h example.org -p 514 net start EvtSys ) exit Security-Auditing:* TerminalServices-Printers:1111 TermServDevices:1111 # nano /etc/syslog.conf *.warning;*.crit;*.err;*.emerg;*.alert @example.org # service syslog restart # nano /etc/rsyslog.conf # service rsyslog restart # nano /etc/rsyslog.conf *.* :ommysql:127.0.0.1,Syslog,sysloguser,1234567; $template dbFormat,"INSERT INTO SystemEvents(Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag, processid, EventID, EventSource) values ( '%msg%',%syslogfacility%,'%HOSTNAME%',%syslogpriority%,'%timereported:::date-mysql%','%timegenerated:::date-mysql%',%iut%,'%programname%','%procid:R,ERE,0,BLANK:[0-9]+--end%','%msg:R,ERE,0,BLANK:^\s[0-9]+:--end%','%programname%')",sql *.* :ommysql:127.0.0.1,Syslog,sysloguser,1234567;dbFormat # service rsyslog restart /usr/bin/php /var/www/html/cron/cmdreportgen.php runreport syslogsummary 1 /usr/bin/php /var/www/html/cron/cmdreportgen.php runreport syslogsummary 1 > /tmp/report12h.html Echo " " | mail –a /tmp/report12h.html –r sender@mail.ru –s "Loganalyzer Report 12H" recipient@mail.ru # nano /etc/crontab 58 11 * * * root /var/www/html/report12h.sh ----------------------------------------------------------------------------------------------------------------- Remote Desktop Services. Построение масштабируемого и отказоустойчивого решения Станислав Шпак Term 192.168.0.10 Term 192.168.0.11 Term 192.168.0.12 Term 192.168.0.13 Term 192.168.0.14 ----------------------------------------------------------------------------------------------------------------- Что в имени тебе моем, или Удаленный анализ сети. Часть 2. Сканирование Андрей Бирюков fping [опции ] [ узлы... ] fping -g 192. 168. 1. 0/24 fping -g 192.168.1.1 192.168.1.254 fping -g 192.168.2.1 192.168.2.254 -с 1 > alive-hosts nmap -sP -PI 192.168.2.1-254 ping 192.168.1.255 ping 192.168.1.0 Nmap -sU -p <номер UDP-порта> <узел> hping -2 192.168.10.30 -c 1 -p 137 -n hping <узел> [опции] hping <узел> -S -р 80 -c 1 hping <узел> -S -А -р 80 -с 1 hping <узел> -А -р 80 -с 1 hping 192.0.2.254 -с 1 -х -р 80 -S -V -D hping <узел> -0 -Н 255 -с 1 ----------------------------------------------------------------------------------------------------------------- Проект Suricata. Open Source-система нового поколения Юрий Денисов wget http://www.openinfosecfoundation.org/download/suricata-1.1.1.tar.gz tar -xvzf suricata-1.1.1.tar.gz cd suricata-1.1.1/ ./configure make make install ./configure --enable-nfqueue suricata -c /etc/suricata/suricata.yaml -q 0 sudo iptables -I FORWARD -j NFQUEUE # cd <путь к исходным кодам pf_ring>/kernel # make # insmod <путь к исходным кодам pf_ring>/kernel/pf_ring.ko mkdir -p /opt/pf_ring/{bin,lib,include/linux,sbin} cp -f <путь к исходным кодам pf_ring> /kernel/linux/pf_ring.h /opt/pf_ring/include/linux/ ./configure —prefix=/opt/pf_ring make make install ./configure —enable-pfring \ --with-libpfring-libraries=/opt/pf_ring/lib \ --with-libpfring-includes=/opt/pf_ring/include \ --with-libpcap-libraries=/opt/pf_ring/lib \ --with-libpcap-includes=/opt/pf_ring/include \ LD_RUN_PATH="/opt/pf_ring/lib:/usr/lib:/usr/local/lib" \ --prefix=/opt/pf_ring/ make make install /opt/pf_ring/bin/suricata --pfring-int=eth0 --pfring-cluster-id=99 --pfring-cluster-type=cluster_flow -c /etc/suricata/suricata.yaml --enable-af_packet suricata -c suricata.yaml --af-packet=eth0 ----------------------------------------------------------------------------------------------------------------- Многогранная SQL Server 2012. Реляционные СУБД уходят в прошлое Фёдор Самородов SELECT Avg (UnitPrice) FROM OrdersHistory SELECT Avg (UnitPrice) FROM OrdersHistory SELECT Sum (UnitPrice * Quantity) FROM OrdersHistory ALTER INDEX MyIndex1 ON MyFactTable DISABLE INSERT... INSERT... INSERT... ALTER INDEX MyIndex1 ON MyFactTable REBUILD CREATE NONCLUSTERED COLUMNSTORE INDEX MyIndex1 ON FactInternetSales ( ProductKey -- ключ, OrderDateKey -- ключ, CustomerKey -- ключ, CurrencyKey -- ключ, OrderQuantity -- факт, UnitPrice -- факт, SalesAmount -- факт, TaxAmt -- факт ) ----------------------------------------------------------------------------------------------------------------- Реляционная файловая система от Microsoft. Новые возможности SQL Server 2012 Фёдор Самородов INSERT INTO MyDocs (name, file_stream) VALUES ('Read me.txt', CAST ('My text' AS varbinary (MAX))), ('Default.html', CAST ('

My header

' AS varbinary (MAX))) EXECUTE sp_Configure filestream_access_level, 2 RECONFIGURE ALTER DATABASE MyDatabase SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'ИмяКаталогаБазы' ) CREATE TABLE MyTable AS FILETABLE WITH ( FILETABLE_DIRECTORY = 'ИмяКаталогаТаблицы' ) ----------------------------------------------------------------------------------------------------------------- Офисная АТС Samsung OfficeServ. Возможности SIP-телефонии Рашид Ачилов conf t sip sip-s xxx (сервер) sip-p yyy (пароль) sip-u zzz (логин) reg e ----------------------------------------------------------------------------------------------------------------- HTML 5. Веб с нечеловеческим лицом. Микроформаты и микроданные Кирилл Сухов
Здравствуйте! Я Иван Паровозов, более известный как Crazzy. Подробнее обо мне: www.сrazzy1969.com. Мой адрес г. Эгвекинот, Чукотский АО 3-я улица Строителей, дом 25, квартира 12 Я программист в Nord Software Мои контакты: +7 (952) 345 67 89 parovozoff@yandex.ru Мои контакты в соцсетях: facebook, вконтакте, одноклассники
Здраствуйте! Я Иван Паровозов, более известный как Crazzy. Подробнее обо мне: www.сrazzy1969.com Мой адрес: г. Эгвекинот, 3-я улица Строителей, дом 25, квартира 12 Я программист в Nord Software Мои контакты: +7 (952) 345 67 89 Мои контакты в соцсетях: faceboock, вконтакте, одноклассники
@prefix : . :gorkiy :write :pesn_o_burevestnike. :gorkiy :hasName :maxim . @prefix : . :vasya :hasFather :ivan :ivan :hasMother :svetlana { ?a :hasFather ?b . ?b :hasMother ?c . } => { ?a :hasGrantMother ?c } Иван Паровозов Страничка Ивана Паровозова Иван Паровозов Иван Паровозов { "http://example.org/about" : { "http://purl.org/dc/elements/1.1/creator" : [ { "value" : "Иван Паровозов", "type" : "literal" } ], "http://purl.org/dc/elements/1.1/title": [ { "value" : "Страничка Ивана Паровозова", "type" : "literal", "lang" : "ru" } ] , "_:person" : { "http://xmlns.com/foaf/0.1/homepage" : [ { "value" : "http://paravozov.com/about", "type" : "uri" } ] , "http://xmlns.com/foaf/0.1/made" : [ { "value" : "http://paravozov.com/about", "type" : "uri" } ] , "http://xmlns.com/foaf/0.1/name" : [ { "value" : "Иван Паровозов", "type" : "literal" } ] , "http://xmlns.com/foaf/0.1/firstName" : [ { "value" : "Иван", "type" : "literal" } ] , "http://xmlns.com/foaf/0.1/surname" : [ { "value" : "Паровозов", "type" : "literal" } ] , "http://xmlns.com/foaf/0.1/depiction" : [ { "value" : "http://paravozov.com/pic.jpg", "type" : "uri" } ] } }
Здравствуйте! Я Иван Паровозов, более известный как Crazzy. Подробнее обо мне: www.сrazzy1969.com. Я живу в Эгвекинот, Чукотский АО Я Программист в Nord Software. Мои контакты в соцсетях: faceboock, вконтакте, одноклассники
Подробнее про стандарт RFD можно узнать, ознакомившись с Следующим документом .
Здраствуйте! Я Иван Паровозов , более известный как Crazzy . Подробнее обо мне: . Мой адрес: г. Эгвекинот, Чукотский АО 3-я улица Строителей, дом 25, квартира 12 Я программист в Nord Software Мои контакты: +7 (952) 345 67 89 parovozoff@yandex.ru Мои контакты в соцсетях: faceboock, вконтакте, одноклассники

JOE BONAMASSA. Новый король блюза. Впервые в Санкт-Петербурге!

afisha 14 марта 2012 г Санкт-Петербург (ДК им. Горького) пл. Стачек, д. 4. Начало концерта: 19.00 билеты в кассах ДК

JOE BONAMASSA. Новый король блюза. Впервые в Санкт-Петербурге!

afisha концерт Санкт-Петербург (ДК им. Горького) пл. Стачек, д. 4. билеты в кассах ДК

{ "summary"=>"JOE BONAMASSA. Новый король ...", "photo"=>"joe.gif", "eventType”=>"концерт", … ДК им.Горького Санкт-Петербург, пл. Стачек, д. 4. Санкт-Петербург, пл. Стачек, д. 4.
http://example.com

My gallery

document.getItems(itemtype); var adressList = document.getItems ('http://data-vocabulary.org/Address"); console.log(adressList.properties['street-address'] [0].textContent); ----------------------------------------------------------------------------------------------------------------- Генерация штрих-кода EAN-13 (ISBN) Иван Коробко Листинг 1. Вычисление контрольной цифры (PowerShell) ISBN = "977-1-81355-700-5" # Удаление пробелов и дефисов $ISBN = $ISBN.replace("-","").replace(" ","") $ISBN $S1=$null $S2=$null for ($k=0;$k -le ($ISBN.Length/2+2); $k=$k+2) { $S1+=[int][string]$ISBN[$k] $S2+=[int][string]$ISBN[$k+1] } $control=([System.Math]::Truncate($result/10+1))*10-$result $control Листинг 2. Определение структуры левого модуля (PowerShell) # ISBN $ISBN = "977-1-81355-700-5" # Удаление пробелов и дефисов $ISBN = $ISBN.replace("-","").replace(" ","") # Определение символа, не закодированного в штрих-коде $ISBN0=$ISBN[0] # Определение массива $arrayN= New-Object 'object[]' 10 $arrayN[0]="000000" $arrayN[1]="001011" $arrayN[2]="001101" $arrayN[3]="001110" $arrayN[4]="010011" $arrayN[5]="011001" $arrayN[6]="011100" $arrayN[7]="010101" $arrayN[8]="010110" $arrayN[9]="011010" #Определение маски $maskAB=$arrayN[[int][string]$ISBN0] "Маска левой части {0}`n" -f ($maskAB.replace("0","A").replace("1","B")) Листинг 3. Преобразование А-В-С-кодов (PowerShell) # Создание массивов по 10 элементов $arrayA= New-Object 'object[]' 10 $arrayB= New-Object 'object[]' 10 $arrayC= New-Object 'object[]' 10 # Массива А $arrayA[0]="0001101" $arrayA[1]="0011001" $arrayA[2]="0010011" $arrayA[3]="0111101" $arrayA[4]="0100011" $arrayA[5]="0110001" $arrayA[6]="0101111" $arrayA[7]="0111011" $arrayA[8]="0110111" $arrayA[9]="0001011" # Формирование массива C – фотографическое негативное исполнение массива А for ($j=0;$j -le $arrayA.Length-1;$j++) { $temp=$null for ($i=0;$i -le $el.Length-1;$i++) { if (($arrayA[$j])[$i] -like "0") {$temp=$temp+[string]"1"} else{$temp=$temp+[string]"0"} } $arrayC[$j]=$temp } # Формирование массива B – зеркальное (реверсивное) исполнение массива B for ($j=0;$j -le $arrayC.Length-1;$j++) { $temp=$null for ($i=$arrayC.Length-1;$i -ge 0;$i--) { $temp = $temp + $arrayC[$j][$i] } $arrayB[$j]=$temp } # Вывод сформированных массивов на экран "`tA`t`tB`t`tC" for ($z=0;$z -le $arrayA.Length-1;$z++) {"{0} {1} {2}" -f $arrayA[$z], $arrayB[$z], $arrayC[$z]} Write-Host Листинг 4. Определение формулы штрихов (PowerShell) # ISBN $ISBN = "977-1-81355-700-5" # Удаление пробелов и дефисов $ISBN = $ISBN.replace("-","").replace(" ","") # Определение левой и правой части ISBN $ISBN1=$ISBN[1..6] $ISBN2=$ISBN[7..13] … # Преобразование левой части $partA = $null $maskAB=$arrayN[[int][string]$ISBN0] "Маска левой части {0}`n" -f ($maskAB.replace("0","A").replace("1","B")) for ($i=0; $i -le $ISBN1.Length-1;$i++) { if ($maskAB[$i] -eq "0") { $k=$ArrayA[[int][string]$ISBN1[$i]]+"(A)" $partA+=$ArrayA[[int][string]$ISBN1[$i]] } if ($maskAB[$i] -eq "1") { $k=$ArrayB[[int][string]$ISBN1[$i]]+"(B)" $partA+=$ArrayB[[int][string]$ISBN1[$i]] } } "`n1-я часть ISBN: {0}" -f $ISBN.Substring(1,6) $partA # Преобразование правой части $partB = $null for ($i=0; $i -le $ISBN2.Length-1;$i++) { $k+=$ArrayC[[int][string]$ISBN2[$i]]+" " $partB+=$ArrayC[[int][string]$ISBN2[$i]]} "`n2-я часть ISBN: {0}" -f $ISBN.Substring(7,6) $partB $delta="00000" $grpISBN=$partA+$delta+$partB $grpISBN Листинг 5. Заголовок EPS-файла (PostScript) %!PS-Adobe-2.0 EPSF-2.0 %%Creator: %%BoundingBox: %%EndComments %%EndProlog Листинг 6. Рисование линии с помощью команды lineto (PostScript) %!PS-Adobe-2.0 EPSF-2.0 1.7 setlinewidth newpath 50 100 moveto 50 200 lineto stroke Листинг 7. Рисование линии с помощью команды rlineto (Post Script) %!PS-Adobe-2.0 EPSF-2.0 1.7 setlinewidth newpath 50 100 moveto 0 100 rlineto stroke Листинг 8. Функция рисования линии (PowerShell) function WriteLine { $X=$args[0][0] # X-координата начала линии $Y=$args[0][1] # Y-координата начала линии $L=$args[0][2] # длина линии $W=$args[0][3] # ширина линии $line=" newpath {3} setlinewidth {0} {1} moveto 0 {2} rlineto stroke " -f $X, $Y, $L,$W $line } Листинг 9. Рисование линий штрих-кода (PowerShell) … $delta="00000" $grpISBN=$partA+$delta+$partB $grpISBN # Исходные данные $zero=0 $width=1.7 $length=-133.2 $fromX=$zero+$width*11 # Рисование линий штрих-кода А-В-C $file=$null for ($i=0; $i -le $grpISBN.Length; $i++) { if (([int][string]$grpISBN[$i]) -eq 1) { $file+ = WriteLine ($fromX+$width*$i), $fromY, $length, $width } } Листинг 10. Рисование ограничивающих штрихов (PowerShell) $width=2 $step=$width*46 $length=-144 $fromX=$width*8 $fromY=10+144 for ($i=0; $i -le 2; $i++) { $file+=WriteLine ($fromX+$step*$i), $fromY, $length, $width $file+=WriteLine ($fromX+$step*$i+$width*2), $fromY, $length, $width $file+=$k } Листинг 11. Печать текста (PostScript) /Arial findfont 24 scalefont setfont 184 0 moveto (Привет) show Листинг 12. Функция печати текста (PowerShell) function WriteText { $X=$args[0][0] # X-координата начала линии $Y=$args[0][1] # Y-координата начала линии $S=$args[0][2] # размер шрифта $T=$args[0][3] # текст $text=" /Arial findfont {2} scalefont setfont {0} {1} moveto ({3}) show " -f $X, $Y,$S,$T $text } Листинг 13. Функция цифр под штрих-кодом (PowerShell) $width=2 $step=$width*7 $fromY=0 $fromX=$width*4 $length=-144 $size=24 for ($i=1;$i -le (($ISBN.Length-1)/2);$i++) { $numS=[int][string]($ISBN[$i]) $file+= WriteText ($fromX+$step*$i), $fromY, $size, ($ISBN[$i]) $file+= WriteText ($fromX+$step*$i+$width*46), $fromY, $size, ($ISBN[$i+6]) } Листинг 14. Запись данных в файл (PowerShell) $ISBN = "977-1-81355-700-5" # Путь к EPS-файлу $path = ("{0}.eps") -f $ISBN # Удаление пробелов и дефисов $ISBN = $ISBN.replace("-","").replace(" ","") … $file | Out-File -FilePath $path -Encoding ascii ----------------------------------------------------------------------------------------------------------------- Представление чисел в памяти ЭВМ. Часть 1. Целые числа. Продолжение Павел Закляков $ cat program6_int_limits.c #include #include void main (void) { printf("max: %d\n",INT_MAX); printf("min: %d\n",INT_MIN); } $ gcc program6_int_limits.c &&./a.out -214 $ gcc program5_int_representation.c &&./a.out -2147483648 $ gcc program5_int_representation.c &&./a.out 2147483647 $ cat program7_int_overflow.c #include void main (void) { int a=2147483647; int b=4; int c; c=a+b; printf ("%d+%d=%d\n",a,b,c); } $ gcc program7_int_overflow.c &&./a.out $ echo "2147483647+4"|bc $ gcc program5_int_representation.c &&./a.out -2147483645 $ cat program8_unsigned_int.c #include void main (void) { int a=2147483647; int b=4; int c; unsigned int d; c=a+b; d=a+b; printf ("%d+%d=%u\n",a,b,c); printf ("%d+%d=%u\n",a,b,d); } $ gcc program8_unsigned_int.c &&./a.out $ cat program10_int_sum.pas program program10_int_sum; var a,b,c :Longint; begin a:=2147483647; b:=4; c:=a+b; writeln(a,'+',b,'=',c); end. $ fpc -oprogram10_int_sum.elf -Tlinux program10_int_sum.pas $ ./program10_int_sum $ cat program11_int_sum2.pas program program10_int_sum; {$R+} var a,b,c :Longint; begin a:=2147483647; b:=4; c:=a+b; writeln(a,'+',b,'=',c); end. $ fpc -oprogram11_int_sum2.elf -Tlinux program11_int_sum2.pas $ ./program11_int_sum2.elf $ echo $? $ cat program12_int_overflow.cpp #include #include using namespace std; int main( int argc, char** argv) { int a,b; cout<<"Минимальное значение "<a-int "; } if (is_int($b)) { echo "
b-int "; } if (is_int($c)) { echo "
c-int "; } $c=$a+$b; echo "
".$a."+".$b."=".$c; if (is_int($a)) { echo "
a-int "; } else { echo "
a-not int "; } if (is_int($b)) { echo "
b-int "; } else { echo "
b-not int "; } if (is_int($c)) { echo "
c-int "; } elseif (is_float($c)) { echo "
c-float "; } else { echo "
c-???(not int, not float)"; } ?> yum install gcc a=~0; printf("a max: %u\n",a); printf("a size: %d\n",sizeof(a)); a=~0; a=-1; ----------------------------------------------------------------------------------------------------------------- Проект BigBlueButton. Платформа для видеоконференций и дистанционного обучения Сергей Яремчук deb http://ubuntu.bigbluebutton.org/lucid/bigbluebutton-lucid main $ sudo bbb-conf --check $ sudo bbb-conf --setip 192.168.10.10 $ sudo bbb-conf --clean > netsh interface ipv6 set teredo disable ----------------------------------------------------------------------------------------------------------------- Быстро и безболезненно. Как правильно запустить новый продукт Константин Кондаков test:: ganglia_cron = ( "crontab_ganglia" ) production:: ganglia_cron = ( "crontab_ganglia__port_80" ) ########################################################### copy: any:: $(master_etc)/cron.d/$(ganglia_cron) dest=/etc/cron.d/crontab_ganglia_apache mode=644 type=checksum server=$(cfengine) encrypt=true owner=root group=root -----------------------------------------------------------------------------------------------------------------