ClearOS... всерьез? Часть первая Алексей Барабанов > X & ratpoison --display :0 & firefox --display :0 -kiosk diff -Naur config-2.6.18-164.el5 config-2.6.18-164.6.1.v5 | grep "^+" | grep -v "^+\(#\|+\)" | wc -l diff -Naur config-2.6.18-164.el5 config-2.6.18-164.6.1.v5 | grep "^-" | grep -v "^-\(#\|-\)" | wc -l diff -Naur config-2.6.18-164.el5 config-2.6.18-164.6.1.v5 | grep BLK_DEV_FD diff -Naur config-2.6.18-164.el5 config-2.6.18-164.6.1.v5 | grep "^+" | grep -v "^+\(#\|+\)" | grep -i isa diff -Naur config-2.6.18-164.el5 config-2.6.18-164.6.1.v5 | grep "^+" | grep -v "^+\(#\|+\)" | grep -i "\(aha1542\|ne2000\)" diff -Naur config-2.6.18-164.el5 config-2.6.18-164.6.1.v5 | grep "^+" | grep -v "^+\(#\|+\)" | grep -i _fb_ | wc -l diff -Naur config-2.6.18-164.el5 config-2.6.18-164.6.1.v5 | grep "^+" | grep -v "^+\(#\|+\)" | grep -i trident diff -Naur config-2.6.18-164.el5 config-2.6.18-164.6.1.v5 | grep "^+" | grep -v "^+\(#\|+\)" | grep -i "\(3dfx\|vood\)" diff -Naur config-2.6.18-164.el5 config-2.6.18-164.6.1.v5 | grep "^+" | grep -v "^+\(#\|+\)" | grep -i "\(irda\|dongle\|sir\|fir\)" | wc -l diff -Naur config-2.6.18-164.el5 config-2.6.18-164.6.1.v5 | grep "^+" | grep -v "^+\(#\|+\)" | grep -i joystic | wc -l diff -Naur config-2.6.18-164.el5 config-2.6.18-164.6.1.v5 | grep "^+" | grep -v "^+\(#\|+\)" | grep -i "\(tuner\|bt8\|saa7\|saa5\|cx8\|zoran\)" | wc -l diff -Naur config-2.6.18-164.el5 config-2.6.18-164.6.1.v5 | grep "^+" | grep -v "^+\(#\|+\)" | grep -i dvb | wc -l diff -Naur config-2.6.18-164.el5 config-2.6.18-164.6.1.v5 | grep "^+" | grep -v "^+\(#\|+\)" | grep -i "\(fs_\|_fs\)" | wc -l diff -Naur config-2.6.18-164.el5 config-2.6.18-164.6.1.v5 | grep "^+" | grep -v "^+\(#\|+\)" | grep -i "\(wan\|_nf_\|imq\|equ\)" # rpm -qi anaconda-runtime | sed -n '/^Descr/,$p' lynx -dump http://download.clearfoundation.com/clearos/enterprise/sources/5.x/ | grep anaconda # dmesg | grep -i SELinux lynx -dump http://download.clarkconnect.com/community/sources/5.x/ | grep anaconda lynx -dump http://download.clarkconnect.com/community/sources/4.x/ | grep anaconda | head -n 1 ----------------------------------------------------------------------------------------------------------------- Разговор на «ты». Репликация Active Directory. Часть 2 Илья Рудь; Константин Леонтьев set logonserver nltest /DSGETDC:<имя домена>/KDC /GC nltest /DSGETDC:<имя домена>/force repadmin /bridgeheads dfsrdiag dumpmachinecfg dfsrdiag StaticRPC /port:nnnnn /Member:dc.itband.ru repadmin /syncall DC1 dc=itband,dc=ru repadmin /syncall DC1 cn=configuration,dc=itband,dc=ru repadmin /syncall DC1 cn=schema,cn=configuration,dc=itband,dc=ru repadmin /replsummary repadmin /showchanges dc1 7b2b9e16-895f-414d-a7b0-5e48f502935c dc=lab,dc=itband,dc=ru repadmin /showsig dc2 repadmin /? /experthelp Repadmin /options DC1 +DISABLE_OUTBOUND_REPL +DISABLE_INBOUND_REPL ----------------------------------------------------------------------------------------------------------------- Практика внедрения сценария регистрации пользователей в сети на PowerShell Иван Коробко Листинг 1. Изменение уровня безопасности PowerShell с помощью REG-файла Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Mi set-executionpolicy unrestricted –force powershell.exe -command "&{set-executionpolicy unrestricted -force}" start /wait команда Листинг 2. Пример основного файла сценария загрузки. Файл main.bat start /wait powershell.exe -command "&{set-executionpolicy unrestricted -force}" start /wait powershell.exe -command "&'%0\..\inventory.ps1'" start /wait powershell.exe -command "&'%0\..\netdisk.ps1'" start /wait powershell.exe -command "&'%0\..\netprn.ps1'" start /wait powershell.exe -command "&{set-executionpolicy restricted -force}" Листинг 3. Пример распределительного блока на основе командного файла @ECHO OFF IF EXIST %SystemRoot%\System32\WindowsPowerShell GOTO PowerShell IF NOT EXIST %SystemRoot%\System32\WindowsPowerShell GOTO KIXTart :PowerShell ECHO Запуск сценария PowerShell start /wait powershell.exe -windowstyle Hidden -command "&{set-executionpolicy unrestricted -force}" start /wait powershell.exe -version 1.0 -windowstyle Hidden -command "&'\\%USERDOMAIN%\NETLOGON\inventory.ps1'" start /wait powershell.exe -version 1.0 -windowstyle Hidden -command "&'\\%USERDOMAIN%\NETLOGON\netdisks.ps1'" start /wait powershell.exe -version 1.0 -windowstyle Hidden -command "&'\\%USERDOMAIN%\NETLOGON\netprinters.ps1'" … EXIT :KIXTart ECHO Запуск сценария KIXTart start /wait /b \\%UserDomain%\NETLOGON\inventory.vbs start /wait /b \\%UserDomain%\NETLOGON\ netdisks.vbs start /wait /b \\%UserDomain%\NETLOGON\ netprinters.vbs … exit Листинг 4. Пример распределительного блока на основе версии операционной системы компьютера-клиента ' определение имени компьютера Set WshShell = CreateObject("Wscript.Shell") Set OSchk = WshShell.Environment("process") ' имя компьютера в %UserDomain%е PCName = OSchk("ComputerName") ' определение имени %UserDomain%а Set rootDSE_ = GetObject("LDAP://RootDSE") Domain = "LDAP://"+rootDSE_.Get("defaultNamingContext") ' создание соединения с ADODB Set objConnection = CreateObject("ADODB.Connection") Set objCommand = CreateObject("ADODB.Command") objConnection.CommandTimeout = 120 objConnection.Provider = "ADsDSOObject" objConnection.Open "Active Directory Provider" Set objCommand.ActiveConnection = objConnection set st=objconnection.execute("SELECT operatingSystemVersion, name, operatingSystem FROM '" & Domain & " ' WHERE name='"& PCName &"'" ) objCommand.properties("Page size")=10000 objCommand.properties("Timeout")=300 objCommand.properties("Cache Results")=False st.Movefirst Do Until st.EOF type_os = left(St.Fields("operatingSystemVersion").Value,3) Select Case type_os Case "5.0" 'Windows 2000 Return = WshShell.Run ("cmd /k start /wait \\"+SDomain+"\netlogon\kixtart.bat",0,true) Case "5.1" 'Windows XP (32-бит) Return = WshShell.Run ("cmd /k start /wait \\"+SDomain+"\netlogon\kixtart.bat",0,true) Case "5.2" 'Windows XP (64-бит) Return = WshShell.Run ("cmd /k start /wait \\"+SDomain+"\netlogon\kixtart.bat",0,true) Case "6.0" 'Windows Vista Return = WshShell.Run ("cmd /k start /wait \\"+SDomain+"\netlogon\powershell.bat",0,true) Case "6.1" 'Windows Seven Return = WshShell.Run ("cmd /k start /wait \\"+SDomain+"\netlogon\powershell.bat",0,true) End Select st.MoveNext Loop Set WshShell=Nothing Листинг 5. Вызов фрагментов сценария из основного модуля … type_os = left(St.Fields("operatingSystemVersion").Value,3) Select Case type_os Case "5.0" 'Windows 2000 Return = WshShell.Run ("cmd /k \\%UserDomain%\NETLOGON\inventory.vbs ",0,true) Return = WshShell.Run ("cmd /k \\%UserDomain%\NETLOGON\netdisks.vbs ",0,true) Return = WshShell.Run ("cmd /k \\%UserDomain%\NETLOGON\netprinters.vbs ",0,true) Case … … ----------------------------------------------------------------------------------------------------------------- NETGEAR ReadyNAS Pro. Установка дополнительных модулей и программ Алексей Бережной berezhnoy@linux-1zti:~>ssh root@10.0.0.86 apt-get install clamav #cp /etc/apt/sources.list /etc/apt/sources.list.old #echo deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free >> /etc/apt/sources.list # cat /etc/apt/sources.list #deb http://www.backports.org/debian etch-backports main deb http://ftp.debian.org/debian etch main deb http://security.debian.org/debian-security etch/updates main deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free nas-EA-17-91:~# apt-get update # gpg --keyserver wwwkeys.eu.pgp.net --recv-keys 9AA38DCD55BE302B # gpg --armor --export 9AA38DCD55BE302B | apt-key add - # apt-get update # apt-get install mc # gpg --armor --export 9AA38DCD55BE302B | apt-key add - # mount # mkdir -p /c/system/clamav # chown clamav:clamav /c/system/clamav # chmod 770 /c/system/clamav # cp /etc/clamav/freshclam.conf /etc/clamav/freshclam.conf.old # cp /etc/clamav/clamd.conf /etc/clamav/clamd.conf.old UpdateLogFile /var/log/clamav/freshclam.log DatabaseDirectory /var/lib/clamav/ PidFile /var/run/clamav/freshclam.pid UpdateLogFile /c/system/clamav/freshclam.log DatabaseDirectory /c/system/clamav/ PidFile /c/system/clamav/freshclam.pid LocalSocket /var/run/clamav/clamd.ctl PidFile /var/run/clamav/clamd.pid DatabaseDirectory /var/lib/clamav LogFile /var/log/clamav/clamav.log LocalSocket /c/system/clamav/clamd.ctl PidFile /c/system/clamav/clamd.pid DatabaseDirectory /c/system/clamav LogFile /c/system/clamav/clamav.log # freshclam //Создаем импровизированный log-файл для скрипта и пишем в него комментарий ClamAV VIRUS BASE UPDATES. //Данный файл будет перезаписываться каждый раз, когда запускается проверка echo ClamAV VIRUS BASE UPDATES > /c/system/everydayscan.log //Обновляем ClamAV, результаты вывода добавляем в лог freshclam >> /c/system/nightscan.log //Проверяем на вирусы общие ресурсы: Users, Documents, Public clamscan --recursive=yes --detect-broken=yes --phishing-ssl=yes --phishing-cloak=yes --move=/c/quarantine -i /c/users >> /c/system/nightscan.log clamscan --recursive=yes --detect-broken=yes --phishing-ssl=yes --phishing-cloak=yes --move=/c/quarantine -i /c/document >> /c/system/nightscan.log clamscan --recursive=yes --detect-broken=yes --phishing-ssl=yes --phishing-cloak=yes --move=/c/quarantine -i /c/public >> /c/system/nightscan.log 59 23 * * * root /opt/everydayscan.sh 59 13 * * * root /opt/everydayscan.sh #/etc/init.d/cron restart #tar -czf /c/backup/user.tar.gz /c/users ----------------------------------------------------------------------------------------------------------------- SoftRAID Mirror для OpenBSD. Как делать зеркало двумя способами Дмитрий Стремковский # disklabel wd0 # fdisk -i wd1 # disklabel -E wd1 # newfs /dev/rwd1a >z >partition [a] (нажимаем enter) >offset [63] (нажимаем enter) >size [xxx] 1G >FS type [4.2BSD] (нажимаем enter) >w >q # mount /dev/wd1a /mnt # wget ftp://ftp.openbsd.org/pub/OpenBSD/4.6/sys.tar.gz # tar zxvf sys.tar.gz # cd sys/arch/`uname -m`/conf/ # nano GENERIC.RF # config GENERIC.RF # cd ../compile/GENERIC.RF # make depend # make # mv /bsd /bsd.orig # mv bsd / # disklabel wd0 > /root/disklabel # disklabel -R wd1 /root/disklabel # rm /root/disklabel # newfs /dev/rwd1a # nano /etc/raid0.conf # Описание массива START array 1 2 0 # Первая цифра означает тип RAID (RAID1 – зеркало). # Вторая – количество дисков в массиве (не больше четырех). # Третья – количество запасных (хотсвоп) дисков (необходимо для рейда старше RAID1). # Описание дисков участников: START disks /dev/wd0d /dev/wd1d # Описание геометрии разметки массива: START layout 128 1 1 1 # Описание принципа построения очереди: START queue fifo 100 # raidctl -C /etc/raid0.conf raid0 # raidctl -I 123123123 raid0 # raidctl -iv raid0 # disklabel -E raid0 # newfs /dev/rraid0a # newfs /dev/rraid0b # newfs /dev/rraid0d # mount /dev/raid0a /altroot # mkdir /altroot/home # mkdir /altroot/var # cd /altroot # mount /dev/raid0b home # mount /dev/raid0d var # dump -0f - / | restore -rf - # nano /altroot/etc/fstab # raidctl -A root raid0 # raidctl -s raid0 # raidctl -S raid0 # raidctl -f /dev/wd1 raid0 # raidctl -F /dev/wd1 raid0 # disklabel wd0 # disklabel -E wd0 # fdisk -i wd1 # disklabel -E wd1 # newfs /dev/rwd1a >z >partition [a] (нажимаем enter) >offset [63] (нажимаем enter) >size [xxx] 1G >FS type [4.2BSD] (нажимаем enter) >w >q # mount /dev/wd1a /mnt # wget ftp://ftp.openbsd.org/pub/OpenBSD/4.6/sys.tar.gz # tar zxvf sys.tar.gz # cd sys/arch/`uname -m`/conf/ # cp GENERIC RAIDSD # cp GENERIC.MP RAIDSD.MP include "arch/i386/conf/GENERIC" include "arch/i386/conf/RAIDSD" config bsd swap generic config bsd root on sd0a # config RAIDSD.MP # cd ../compile/RAIDSD.MP # make depend # make # cp bsd /bsd.sd.mp # disklabel wd0 > /root/disklabel # disklabel -R wd1 /root/disklabel # rm /root/disklabel # newfs /dev/rwd1a # bioctl -c 1 -l /dev/wd0d,/dev/wd1d softraid0 # mknod /dev/wd1a b 0 16 # mknod /dev/wd1b b 0 17 # mknod /dev/wd1c b 0 18 … # mknod /dev/wd1p b 0 31 # mknod /dev/rwd1a c 3 16 # mknod /dev/rwd1b c 3 17 # mknod /dev/rwd1c c 3 18 ... # mknod /dev/rwd1p c 3 31 # fdisk -i sd0 # mv /bsd /bsd.orig # mv /bsd.sd.mp /bsd # bioctl -i softraid0 # bioctl -R /dev/wd1d sd0 # newfs /dev/wd1a # mkdir /mnt/wd0a # mkdir /mnt/wd1a # mount /dev/wd0a /mnt/wd0a # mount /dev/wd1a /mnt/wd1a # cd /mnt/wd1a # dump -f0 - /mnt/wd0a | restore -rf - # /usr/mdec/installboot /mnt/wd1a/boot /mnt/wd1a/usr/mdec/biosboot wd1 ----------------------------------------------------------------------------------------------------------------- SSL-сертификаты сайтов. Назначение и использование Рашид Ачилов [ ca ] # Эта секция будет использоваться, если ничего не задано default_ca = CA_default [ CA_default ] dir = . # Корневой каталог (относительно текущего!) certs = $dir/ssl.crt # Здесь будут лежать выданные сертификаты crl_dir = $dir/ssl.crl # Здесь будут лежать списки отзыва database = $dir/index.txt # Это индексный файл базы данных new_certs_dir = $dir/ssl.crt # Место для новых сертификатов certificate = $dir/caserv.crt # Собственный сертификат CA serial = $dir/serial # Файл для хранения текущего серийного номера crl = $dir/ssl.crl/crl.pem # Текущий CRL private_key = $dir/ssl.key/caserv.key # Личный ключ CA [ ssl_server ] basicConstraints = CA:FALSE nsCertType = server keyUsage = digitalSignature, keyEncipherment extendedKeyUsage = serverAuth, nsSGC, msSGC nsComment = "OpenSSL Certificate for SSL Web Server" subjectKeyIdentifier=hash authorityKeyIdentifier=keyid,issuer:always subjectAltName=email:copy issuerAltName=issuer:copy [ ssl_client ] basicConstraints = CA:FALSE nsCertType = client keyUsage = digitalSignature, keyEncipherment extendedKeyUsage = clientAuth nsComment = "OpenSSL Certificate for SSL Client" subjectKeyIdentifier=hash authorityKeyIdentifier=keyid,issuer:always subjectAltName=email:copy issuerAltName=issuer:copy # cd /usr/local/etc/apache22/ssl # mkdir ssl.crl # mkdir ssl.crt # mkdir ssl.csr # mkdir ssl.key # mkdir ssl.prm # openssl req -config /etc/ssl/openssl.cnf -new -newkey rsa:1024 -keyout caserv.key -x509 -days 7300 -out caserv.cr # touch index.txt # echo '01' > serial # openssl x509 -inform PEM -in caserv.crt -outform DER -out caserv.cer # openssl x509 -in caserv.crt -noout -text -sha1 -fingerprint > makecab _setup.xml wmcaserv.cab # openssl req -new -sha1 -newkey rsa:1024 -nodes -keyout .key -out .pem -config /etc/ssl/openssl.cnf # openssl ca -config /etc/ssl/openssl.cnf -policy policy_anything -out ssl.crt/.pem -infiles ssl.csr/.pem # openssl x509 -in ssl.crt/.pem -out ssl.crt/.crt SSLCertificateFile /usr/local/etc/apache/ssl.crt/.crt SSLCertificateKeyFile /usr/local/etc/apache/ssl.key/.key ----------------------------------------------------------------------------------------------------------------- Возможности языка PHP. Работа с приложениями посредством технологии COM Кирилл Сухов Public Function hello() As String hello = "Hello COM!" End Function hello(); echo $output; ?> Visible = 0; $word->Documents->Add(); $word->Selection->Font->Name = 'Times New Roman'; $word->Selection->Font->Size = 32; $word->Selection->TypeText("Превед!"); $word->Documents[1]->SaveAs("preved.doc"); $word->quit(); isset($word); ?> Visible = 0; $word->Documents->Add(); $word->Selection->Font->Name = 'Times New Roman'; $word->Selection->Font->Size = 32; $word->Selection->TypeText("Ура!"); $word->Selection->TypeParagraph; $word->Selection->TypeParagraph; $word->Selection->Font->Size = 12; $word->Selection->TypeText("Создаем документ MSWord посредством PHP. "); $word->Selection->Font->Color=255255; $word->Selection->TypeText("Разноцветный документ"); $word->Selection->TypeParagraph; $word->Documents[1]->SaveAs("test.doc"); unset($word); ?> Sub Макрос1() ' ' Макрос1 Макрос ' Selection.TypeText Text:="Ура!" Selection.MoveLeft Unit:=wdCharacter, Count:=4, Extend:=wdExtend Selection.Font.Size = 36 Selection.MoveRight Unit:=wdCharacter, Count:=1 Selection.Font.Size = 12 Selection.TypeParagraph Selection.TypeParagraph Windows("test.docx").Activate Windows("Докяяяяумент3").Activate Selection.TypeText Text:="Саздаем документ " Application.Keyboard (1033) Selection.TypeText Text:="MSOffice" Application.Keyboard (1049) Selection.TypeText Text:=", посредством " Application.Keyboard (1033) Selection.TypeText Text:="PHP" Application.Keyboard (1049) Selection.TypeText Text:=". " Selection.Font.Color = 5287936 Selection.TypeText Text:="Разноцветный документ." ActiveDocument.SaveAs FileName:="Ура.docx", FileFormat:= wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:=False End Sub Visible = 0; $doc=$word->Documents->Add(); $word->Selection->ParagraphFormat->Alignment=1; $word->Selection->TypeText("Ведомость"); $word->Selection->TypeParagraph; $table= $doc->Tables->Add($word->Selection->Range,5,5); $word->Selection->TypeText("Имя"); $word->Selection->MoveRight(); $word->Selection->TypeText("Должность"); $word->Selection->MoveRight(); $word->Selection->TypeText("Оклад"); $word->Selection->MoveRight(); $word->Selection->TypeText("Премия"); $word->Selection->MoveRight(); $word->Selection->TypeText("Что нибудь еще"); $word->Selection->MoveRight(); $word->Selection->TypeText("Иванов Иван"); $word->Selection->MoveRight(); $word->Selection->TypeText("Программист"); $word->Selection->MoveRight(); $word->Selection->TypeText("120 000"); $word->Selection->MoveRight(); $word->Selection->TypeText("over 9000"); $word->Selection->MoveRight(); $word->Selection->TypeText("еще"); $word->Documents[1]->SaveAs("test2.doc"); $word->quit(); isset($word); ?> Visible = 0; $wkbook = $excel->Workbooks->Add(); $sheet = $wkbook->Worksheets(1); $sheet->activate; $cell = $sheet->Cells(1,1); $cell->Activate; $cell->value = 'Hello!'; $wkbook->SaveAs("hello.xls"); $wkyook->Close(false); $excel->Workbooks->Close(); $excel->Quit(); isset($excel); ?> $names=array('Иванов','Петров','Бешков'); $places=array('Администрация','Бухгалтерия','Служба безопастности'); $solary=array('3000','4500','9010'); $file="C:\\store\save”.date('Y-m-d').".xls"; $sheet = $wkbook->Worksheets(1); $sheet->activate; $vofset=4; $hofset=1; for($i=0;$iCells($vofset+$i,$hofset+1); $cell->Activate; $cell->value = $names[$i]; $cell = $sheet->Cells($vofset+$i,$hofset+2); $cell->Activate; $cell->value = $places[$i]; $cell = $sheet->Cells($vofset+$i,$hofset+3); $cell->Activate; $cell->value = $solary[$i]; } print $file; $wkbook->SaveAs($file); $wkbook->Close(false); $excel->Workbooks->Close(); $excel->Quit(); isset($excel); ?> Presentations->Add() or die ("Could not create presentation"); $slide=$ppoint->Presentations[1]->Slides->Add(1,1); $name = $slide->Name(); echo "Hello ”. $sname "!”; $ppoint->Presentations[1]->SaveAs("c:/InetPub/www/test.ppt"); $ppoint->Presentations[1]->Close(); $ppoint->Quit(); unset($ppoint); ?> $conn = new COM("ADODB.Connection"); $conn->open('DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=' . realpath("relative_path/db.mdb")); $sql="SELECT Name, SName FROM clients"; $result = $conn->execute($sql); $conn->Close(); unset($conn); var_dump($result); $Outlook = new COM("Outlook.Application"); $Item = $ Outlook ->CreateItem(olMailItem); $a=$Item->Recipients->Add("suckhov@mics.ru"); $Item->Subject="Hi"; $Item->Body="Hello!” $Item->Display(); $Item->Send(); $browser = new COM("InternetExplorer.Application"); $browser->Visible = true; $browser->Navigate("http://mysite.com"); $folder="RegisteredApplications"; $key="WinRar"; $WShell = new COM("WScript.Shell"); $registry = "HKEY_LOCAL_MACHINE\SOFTWARE\\" . $folder . "\\" . $key;
$result = $WshShell->RegRead($registry) $mp = new COM("WMPlayer.OCX"); $mp->cdromcollection->item(0)->eject(); ----------------------------------------------------------------------------------------------------------------- Разворачиваем антивирус. Symantec Endpoint Protection 11 Максим Рожков Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all #!/bin/bash mount -t cifs -o user=guest%,file_mode=0555,dir_mode=0755 \\\\192.168.30.1\\clu-test /tmp list_of_files=$(find /tmp -type f -mtime -2 -print) cp -f $list_of_files /srv/www/htdocs/liveupdate umount /tmp ----------------------------------------------------------------------------------------------------------------- Апрельский прикол. Как поздравить пользователей с Днем смеха Андрей Луконькин Если Лев(Строка(ТекущаяДата()),5)="01.04" Тогда Форма = Обработки.СистемноеСообщение.ПолучитьФорму("Форма"); Форма.ПоложениеОкна = ВариантПоложенияОкна.Центрировать; Форма.ОткрытьМодально(); КонецЕсли; Процедура ЭлементУправления1MouseMove(Элемент, Button, Shift, X, Y) ГСЧ = Новый ГенераторСлучайныхЧисел(); СЧ = ГСЧ.СлучайноеЧисло(ЭлементыФормы.КоманднаяПанель1.Высота, ЭтаФорма.Высота - ЭлементыФормы.ЭлементУправления1.Высота - ЭлементыФормы.ОсновныеДействияФормы.Высота); ЭлементыФормы.ЭлементУправления1.Верх = СЧ; СЧ = ГСЧ.СлучайноеЧисло(0, ЭтаФорма.Ширина - ЭлементыФормы.ЭлементУправления1.Ширина); ЭлементыФормы.ЭлементУправления1.Лево = СЧ; КонецПроцедуры Процедура ЭлементУправления2MouseMove(Элемент, Button, Shift, X, Y) ГСЧ = Новый ГенераторСлучайныхЧисел(); СЧ = ГСЧ.СлучайноеЧисло(ЭлементыФормы.КоманднаяПанель1.Высота, ЭтаФорма.Высота - ЭлементыФормы.ЭлементУправления2.Высота - ЭлементыФормы.ОсновныеДействияФормы.Высота); ЭлементыФормы.ЭлементУправления2.Верх = СЧ; СЧ = ГСЧ.СлучайноеЧисло(0, ЭтаФорма.Ширина - ЭлементыФормы.ЭлементУправления2.Ширина); ЭлементыФормы.ЭлементУправления2.Лево = СЧ; КонецПроцедуры ----------------------------------------------------------------------------------------------------------------- Другой подход к обновлению платформы «1С:Предприятие 8» Павел Наседкин DistributiveLocation=H:\1CDistrib Components=DESIGNERALLCLIENTS=1 THINCLIENTFILE=0 THINCLIENT=0 WEBSERVEREXT=0 SERVER=0 CONFREPOSSERVER=0 CONVERTER77=0 SERVERCLIENT=0 LANGUAGES=RU ----------------------------------------------------------------------------------------------------------------- Вам нужен чек? Используйте внешние печатные формы Андрей Луконькин Функция Печать() Экспорт ТабДокумент = ПечатьДокумента(); Возврат ТабДокумент; КонецФункции Функция ПечатьДокумента() Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТекущийДокумент",СсылкаНаОбъект); Запрос.Текст = "ВЫБРАТЬ | ЧекККМ.Номер, | ЧекККМ.Дата, | ЧекККМ.СуммаДокумента |ИЗ | Документ.ЧекККМ КАК ЧекККМ |ГДЕ | ЧекККМ.Ссылка = &ТекущийДокумент"; Шапка = Запрос.Выполнить().Выбрать(); Шапка.Следующий(); Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТекущийДокумент",СсылкаНаОбъект); Запрос.Текст = "ВЫБРАТЬ | ВложенныйЗапросПоТоварам.Номенклатура, | ВложенныйЗапросПоТоварам.Количество, | ВложенныйЗапросПоТоварам.Цена, | ВложенныйЗапросПоТоварам.Сумма, | ВложенныйЗапросПоТоварам.НомерСтроки КАК НомерСтроки |ИЗ | (ВЫБРАТЬ | ЧекККМ.Номенклатура КАК Номенклатура, | СУММА(ЧекККМ.Количество) КАК Количество, | ЧекККМ.Цена КАК Цена, | СУММА(ЧекККМ.Сумма) КАК Сумма, | МИНИМУМ(ЧекККМ.НомерСтроки) КАК НомерСтроки | ИЗ | Документ.ЧекККМ.Товары КАК ЧекККМ | ГДЕ | ЧекККМ.Ссылка = &ТекущийДокумент | СГРУППИРОВАТЬ ПО | ЧекККМ.Номенклатура, | ЧекККМ.Цена) КАК ВложенныйЗапросПоТоварам |УПОРЯДОЧИТЬ ПО | НомерСтроки"; ЗапросТовары = Запрос.Выполнить().Выгрузить(); ТабДокумент = Новый ТабличныйДокумент; Макет = ПолучитьМакет("Чек"); ОбластьМакета = Макет.ПолучитьОбласть("ШапкаТаблицы"); ТабДокумент.Вывести(ОбластьМакета); ОбластьНомера = Макет.ПолучитьОбласть("Строка|НомерСтроки"); ОбластьТовар = Макет.ПолучитьОбласть("Строка|Товар"); ОбластьДанных = Макет.ПолучитьОбласть("Строка|КоличествоЦена"); ОбластьСуммы = Макет.ПолучитьОбласть("Строка|Сумма"); Сумма = 0; Для каждого ВыборкаСтрокТовары из ЗапросТовары Цикл Если Не ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное); Продолжить; КонецЕсли; ОбластьНомера.Параметры.НомерСтроки = ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1; ТабДокумент.Вывести(ОбластьНомера); ОбластьТовар.Параметры.Заполнить(ВыборкаСтрокТовары); ОбластьТовар.Параметры.Товар = СокрЛП(ВыборкаСтрокТовары.Номенклатура); ТабДокумент.Присоединить(ОбластьТовар); ОбластьДанных.Параметры.Заполнить(ВыборкаСтрокТовары); ОбластьДанных.Параметры.Цена = ВыборкаСтрокТовары.Цена; ТабДокумент.Присоединить(ОбластьДанных); ОбластьСуммы.Параметры.Заполнить(ВыборкаСтрокТовары); ТабДокумент.Присоединить(ОбластьСуммы); Сумма = Сумма + ВыборкаСтрокТовары.Сумма; КонецЦикла; // Вывести Итого ОбластьНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки"); ОбластьТовар = Макет.ПолучитьОбласть("Итого|Товар"); ОбластьДанных = Макет.ПолучитьОбласть("Итого|КоличествоЦена"); ОбластьСуммы = Макет.ПолучитьОбласть("Итого|Сумма"); ТабДокумент.Вывести(ОбластьНомера); ТабДокумент.Присоединить(ОбластьТовар); ТабДокумент.Присоединить(ОбластьДанных); ОбластьСуммы.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма); ТабДокумент.Присоединить(ОбластьСуммы); ОбластьМакета = Макет.ПолучитьОбласть("Заголовок"); ОбластьМакета.Параметры.ТекстЗаголовка = "Чек покупки №" + Шапка.Номер; ОбластьМакета.Параметры.КогдаПродал = Формат(ТекущаяДата(),"ДЛФ=Д"); ТабДокумент.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("Продавец"); ОбластьМакета.Параметры.КтоПродал = "Продавец: " + ПользователиИнформационнойБазы.ТекущийПользователь().ПолноеИмя; ОбластьМакета.Параметры.КогдаПродал2 = Формат(ТекущаяДата(),"ДФ=ЧЧ:мм"); ТабДокумент.Вывести(ОбластьМакета); Возврат ТабДокумент; КонецФункции // ПечатьДокумента() ----------------------------------------------------------------------------------------------------------------- Создаем свой YouTube. Накладываем текст на видео Александр Майоров mencoder -oac lavc -ovc lavc *.avi -o final_output_video_file.avi mencoder -ovc help mencoder -ovc lavc -oac lavc -lavcopts acodec=libmp3lame:abitrate=128 inputfile.mpg -o outputfile.avi mencoder -ovc lavc -oac mp3lame -lameopts vbr=2:q=4 inputfile -o outputfile.avi mencoder -ovc lavc -oac lavc -lavcopts acodec=libmp3lame:abitrate=128 vcodec=xvid inputfile.mpg -o outputfile.avi ffmpeg -i inputfile.avi -f image2 /tmp/videobrender%09d.png ffmpeg -i inputfile -vn -acodec pcm_s16le -ar 44100 -ac 2 /tmp/videobrender/audiotrack.wav mogrify -pointsize 16 -fill white -annotate +4+10 'SAMAG.RU Video' /tmp/videobrender/*.png ffmpeg -f image2 -i /tmp/videobrender/%09d.png -f avi brend_file.avi ffmpeg -i /tmp/videobrender/audiotrack.wav -i brend_file.avi brend_audio_file.avi #!/bin/bash fname=$1 fname=${fname:?"File name can't be empty!"} text=$2 text=${text:?"Text can't be empty!"} tmpdir="`pwd`/jpeg" rm "${tmpdir:?"WARNING! Not set path to temporary folder."}/*" echo "Parse video..." ffmpeg -i $fname -f image2 "$tmpdir/%09d.png" echo "Parse audio..." rm "$tmpdir/track.wav" ffmpeg -i $fname -vn -acodec pcm_s16le -ar 44100 -ac 2 "$tmpdir/track.wav" echo "Brend frames..." mogrify -pointsize 16 -fill white -annotate +4+10 $text "$tmpdir/*.png" echo "Create video..." rm brend_$fname ffmpeg -f image2 -i "$tmpdir/%09d.png" -f avi brend_$fname echo "Add audio..." ffmpeg -i jpeg/track.wav -i brend_$file brend_audio_$fname rm brend_$fname #EOF brender inputfile.avi 'Test text' ffmpeg -i input.avi -acodec copy -vhook '/path/to/vhook/extensions/watermark.so -f /path/to/watermark/watermark.gif' output.avi ffmpeg -i inputfile.avi -vhook 'drawtext.so -f tahomabd.ttf -x 10 -y 10 -t WatermarkText' outputfile.avi mkfifo pipename #!/bin/bash [ -e logopipe ] && rm logopipe mkfifo logopipe mplayer -vf bmovl=0:1:./logopipe videofile.avi > /dev/null & i=0 while true do echo "RGB24 100 50 $i 0 0 0" > logopipe cat logo.rgb > logopipe sleep 1 let i=i+5 done #!/bin/bash (echo "RGBA32 100 50 0 0 0 0"; cat mylogo.rgba ) > pip & mencoder -oac copy -vf bmovl=0:1:pip -ovc raw -o inputvideo.avi outputvideo.avi mplayer -subwidth 75 -subcp utf8 -subfont-text-scale 8 -sub subsfile.srt inputvideo.avi 1 00:00:00,000 --> 00:00:59,000 Test subtitle! mencoder -subwidth 75 -subcp utf8 -subfont-text-scale 8 -sub subsfile.srt -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=2000 inputvideo.avi -o outputvideo.avi mplayer -ss 30 -frames 1 -vo jpeg: outdir=screenshot/ -nosound inputvideo.avi mencoder mf://folder_with_frames/*.png -mf w=176:h=144:fps=15:type=png -ovc lavc -lavcopts vcodec=mpeg4 -o outputvideo.3gp xargs -P 2 -J mplayer -ss 30 -frames 1 -vo jpeg: outdir=screenshot/ -nosound inputvideo.avi -----------------------------------------------------------------------------------------------------------------