Поиск по этому блогу
пятница, 29 марта 2013 г.
Удаленное выполнение команд с помощью ssh
Частенько бывает нужно просто выполнить пару команд удалённо, без захода в шелл.
Следующая команда ssh может быть использована для удаленного создания файла:
ssh user@ssh-server.com '( cd /tmp/ && touch ssh_file.txt )'
Создание локальной копии удаленного файла /etc/passwd в /tmp/passwd:
ssh user@ssh-server.com '( cat /etc/passwd )' > /tmp/passwd
Выполнение сценария на удаленном сервере с помощью ssh:
Примечание: мы предполагаем, что сценарий существует, он исполняемый и у вас есть права на его выполнение.
ssh user@ssh-server.com '( cat ~/myscript.sh )'
В этом примере мы сделали bzip2 локальной копии файла /var/log/auth.log в локальный каталог /tmp/:
ssh user@ssh-server.com '( cp /var/log/auth.log /tmp/; cd /tmp/ && tar -jcvf — auth.log )' > /tmp/auth.tar.bz2
Оригинал: http://www.linuxconfig.org/executing-commands-remotely-with-ssh-and-output-redirection
Этот материал находится на сайте http://compiling.ru
суббота, 17 марта 2012 г.
Детектирование Apple Safari 5.1.1 useragent с помощью jquery и javascript
Строка user-agent Safari от Apple выглядит так:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/534.51.22 (KHTML, like Gecko) Version/5.1.1 Safari/534.51.22
function checkSafariVersion(version) {
$.browser.chrome = $.browser.webkit && !!window.chrome;
$.browser.safari = $.browser.webkit && !window.chrome;
if ($.browser.safari && navigator.userAgent.match(/Version\/(.*\s)/)[1].trim() < version) {
alert('Update your Safari');
}
return;
}
checkSafariVersion('5.1.2');
Простой nginx+php+windows без всякой хни
1. Установка nginx
Качаем с http://nginx.org/ru/download.html последнюю версию
Распаковываем в удобное место.
2. Создаём батник для запуска
cd c:\www\_servers\nginx\
start nginx
c:\www\_servers\xampp\php\php-cgi.exe -b 127.0.0.1:9000 -c c:\www\_servers\xampp\php\php.ini
exit
(php-cgi.exe устанавливается вместе с php, я использовал php от xampp, апач которого предварительно прибил в службах и запретил ему запускаться)
3. Конфиг nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
server_name test.local;
index index.html index.php;
root c:/www/_!sites/test.local/;
location ~ \.php$ {
root c:/www/_!sites/test.local/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME c:/www/_!sites/test.local/$fastcgi_script_name;
include fastcgi_params;
}
}
}
4. Запуск службой
Я использовал для этих целей плагин для total commander под названиием Services (локальные службы). В качестве запускаемого приложения указал вышеупомянутый батник.
В переменную окружения записываем PHP_FCGI_MAX_REQUESTS со значением 0 (это для того, чтобы fcgi не отваливался по достижению максимального количества запросов)
В принципе, этого достаточно для запуска web-сервера nginx на вашем windows-"box".
Качаем с http://nginx.org/ru/download.html последнюю версию
Распаковываем в удобное место.
2. Создаём батник для запуска
cd c:\www\_servers\nginx\
start nginx
c:\www\_servers\xampp\php\php-cgi.exe -b 127.0.0.1:9000 -c c:\www\_servers\xampp\php\php.ini
exit
(php-cgi.exe устанавливается вместе с php, я использовал php от xampp, апач которого предварительно прибил в службах и запретил ему запускаться)
3. Конфиг nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
server_name test.local;
index index.html index.php;
root c:/www/_!sites/test.local/;
location ~ \.php$ {
root c:/www/_!sites/test.local/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME c:/www/_!sites/test.local/$fastcgi_script_name;
include fastcgi_params;
}
}
}
4. Запуск службой
Я использовал для этих целей плагин для total commander под названиием Services (локальные службы). В качестве запускаемого приложения указал вышеупомянутый батник.
В переменную окружения записываем PHP_FCGI_MAX_REQUESTS со значением 0 (это для того, чтобы fcgi не отваливался по достижению максимального количества запросов)
В принципе, этого достаточно для запуска web-сервера nginx на вашем windows-"box".
суббота, 11 февраля 2012 г.
Complete property Internet Explorer
Оказывается, всеми горячо "любимый" браузер Internet Explorer (речь идёт о 9-й версии сего детища браузеростроения) как всегда, по-своему обрабатывает свойство complete DOM-элемента image (попросту - картинки).
Если просто размещать картинки и прикольные фотки на странице, то ничего страшного в этом нет, ты никогда об этом даже не узнаешь.
Но мы (корейские пионеры), создаём интерактивные приложения на html canvas, поэтому сей баг здорово подпортил нам кровь. Дело в том, что некоторые библиотеки (в частности, jcanvas) используют это свойство в своих функциях.
К счастью, решение проблемы существует в виде плагина к jQuery под названием $.fn.imagesLoaded jQuery plugin.
Пример использования:
$(imagesContainer).imagesLoaded(function(){
делаем свои дела ;
});
imagesContainer - контейнер, в который загружаются картинки.
Вот и всё. Всем удачи.
Если просто размещать картинки и прикольные фотки на странице, то ничего страшного в этом нет, ты никогда об этом даже не узнаешь.
Но мы (корейские пионеры), создаём интерактивные приложения на html canvas, поэтому сей баг здорово подпортил нам кровь. Дело в том, что некоторые библиотеки (в частности, jcanvas) используют это свойство в своих функциях.
К счастью, решение проблемы существует в виде плагина к jQuery под названием $.fn.imagesLoaded jQuery plugin.
Пример использования:
$(imagesContainer).imagesLoaded(function(){
делаем свои дела ;
});
imagesContainer - контейнер, в который загружаются картинки.
Вот и всё. Всем удачи.
четверг, 9 февраля 2012 г.
Виртуальные хосты. Апач на коленке за 5 секунд.
Добавь в httpd.conf :
LoadModule vhost_alias_module modules/mod_vhost_alias.so
# Virtual hosts
Include "conf/extra/httpd-vhosts.conf"
Потом в conf/extra/httpd-vhosts.conf напиши:
#задаем настройки директорий вебсервера по дефолту
<Directory "c:/www/_!sites/">
Options
ExecCGI
Потом в conf/extra/httpd-vhosts.conf напиши:
#задаем настройки директорий вебсервера по дефолту
<Directory "c:/www/_!sites/">
Options
ExecCGI
Indexes
FollowSymLinks
MultiViews
AllowOverride all
Order Allow,Deny
Allow from all
</Directory>
#приказываем апачке различать хосты по имени и слушать все ип адреса машины
#приказываем апачке различать хосты по имени и слушать все ип адреса машины
NameVirtualHost *:80
#задаем автоматическое подключение виртуальных хостов по их имени
<VirtualHost _default_:80>
#задаем автоматическое подключение виртуальных хостов по их имени
<VirtualHost _default_:80>
VirtualDocumentRoot c:/www/_!sites/%0/
ScriptAlias /cgi-bin/ "cgi-bin/"
</VirtualHost>
Всё. Вместо c:/www/_!sites/ - путь к каталогу, где у тебя будут лежать каталоги с сайтами.
Всё. Вместо c:/www/_!sites/ - путь к каталогу, где у тебя будут лежать каталоги с сайтами.
Вопросы?
суббота, 3 декабря 2011 г.
Improving font rendering on Ubuntu
I did not like the default font rendering in Ubuntu.
I found a patch to freetype2, that gives you a lot more flexibility over the font rendering, and does a decent job mimicking the rendering in OSX or Windows.
I found instructions here.
The remainder of this post is copy and paste:
- Download freetype 2.4.8 from freetype.org and unzip it somewhere.
- Download the infinality .tar.gz file, and unzip it somewhere.
- cd to the freetype-2.4.8 directory from a terminal and run these commands (edit the paths to match where you unzipped):
patch -p1 < /path/to/your/extracted/files/freetype-add-subpixel-hinting-infinality-20111117-1.patch
patch -p1 < /path/to/your/extracted/files/freetype-enable-subpixel-hinting-infinality-20100909-1.patch
patch -p1 < /path/to/your/extracted/files/freetype-entire-infinality-patchset-20111117-1.patch
./configure
make
sudo mkdir /usr/lib/freetype-infinality/ sudo
find . -name libfreetype.so.6.8.0 -exec mv {} /usr/lib/freetype-infinality/ \;
cd /usr/lib/freetype-infinality ln -s libfreetype.so.6.8.0 libfreetype.so.6
Then look at the README file for instructions on where to put the configuration files.
http://blog.adamdklein.com/?cat=17
I did not like the default font rendering in Ubuntu.
I found a patch to freetype2, that gives you a lot more flexibility over the font rendering, and does a decent job mimicking the rendering in OSX or Windows.
I found instructions here.
The remainder of this post is copy and paste:
- Download freetype 2.4.8 from freetype.org and unzip it somewhere.
- Download the infinality .tar.gz file, and unzip it somewhere.
- cd to the freetype-2.4.8 directory from a terminal and run these commands (edit the paths to match where you unzipped):
patch -p1 < /path/to/your/extracted/files/freetype-add-subpixel-hinting-infinality-20111117-1.patch
patch -p1 < /path/to/your/extracted/files/freetype-enable-subpixel-hinting-infinality-20100909-1.patch
patch -p1 < /path/to/your/extracted/files/freetype-entire-infinality-patchset-20111117-1.patch
./configure
make
sudo mkdir /usr/lib/freetype-infinality/ sudo
find . -name libfreetype.so.6.8.0 -exec mv {} /usr/lib/freetype-infinality/ \;
cd /usr/lib/freetype-infinality ln -s libfreetype.so.6.8.0 libfreetype.so.6
Then look at the README file for instructions on where to put the configuration files.
http://blog.adamdklein.com/?cat=17
вторник, 29 марта 2011 г.
Создание сертификатов клиента для OpenVPN
newcert.sh
Вызывается: newcert.sh имя_сертификата
#!/usr/local/bin/bash
cd /usr/local/etc/openvpn/scripts
export KEY_CONFIG="/usr/local/etc/openvpn/scripts/openssl.cnf"
export KEY_DIR="/usr/local/etc/openvpn/scripts/keys" # Каталог, в котором создаются ключи
export KEY_SIZE=1024 # Длина ключа
export KEY_COUNTRY="RU"
export KEY_PROVINCE="RU" # Значение должно совпадать со значением в CA сервера
export KEY_CITY="Your_city" # Значение должно совпадать со значением в CA сервера
export KEY_ORG="Your_company" # Значение должно совпадать со значением в CA сервера
export KEY_EMAIL="mail@mail.ru"
cd /usr/local/etc/openvpn/scripts
export NEWKEY_NAME=$1 # Будет содержать имя последнего созданного сертификата
./build-key $NEWKEY_NAME # Создание сертификатов
echo $NEWKEY_NAME
if [ ! -d /usr/local/etc/openvpn/clients/$NEWKEY_NAME ]; then
mkdir /usr/local/etc/openvpn/clients/$NEWKEY_NAME
else echo "Каталог существует";
fi
cp $KEY_DIR/ca.crt /usr/local/etc/openvpn/clients/$NEWKEY_NAME/
cp $KEY_DIR/$NEWKEY_NAME.* /usr/local/etc/openvpn/clients/$NEWKEY_NAME/ # Копируем все сертификаты в каталог с именем клиента для последующей выдачи ему.
ls -la /usr/local/etc/openvpn/clients/$NEWKEY_NAME # Любуемся
openssl.cnf
HOME = .
RANDFILE = $ENV::HOME/.rnd
oid_section = new_oids
[ new_oids ]
####################################################################
[ ca ]
default_ca = CA_default # The default ca section
####################################################################
[ CA_default ]
dir = $ENV::KEY_DIR # Where everything is kept
certs = $dir # Where the issued certs are kept
crl_dir = $dir # Where the issued crl are kept
database = $dir/index.txt # database index file.
new_certs_dir = $dir # default place for new certs.
certificate = $dir/ca.crt # The CA certificate
serial = $dir/serial # The current serial number
crl = $dir/crl.pem # The current CRL
private_key = $dir/ca.key # The private key
RANDFILE = $dir/.rand # private random number file
x509_extensions = usr_cert # The extentions to add to the cert
default_days = 3650 # how long to certify for
default_crl_days= 30 # how long before next CRL
default_md = md5 # which md to use.
preserve = no # keep passed DN ordering
policy = policy_match
# For the CA policy
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
# For the 'anything' policy
# At this point in time, you must list all acceptable 'object'
# types.
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
####################################################################
[ req ]
default_bits = $ENV::KEY_SIZE
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca # The extentions to add to the self signed cert
string_mask = nombstr
# req_extensions = v3_req # The extensions to add to a certificate request
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = $ENV::KEY_COUNTRY
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = $ENV::KEY_PROVINCE
localityName = Locality Name (eg, city)
localityName_default = $ENV::KEY_CITY
0.organizationName = Organization Name (eg, company)
0.organizationName_default = $ENV::KEY_ORG
organizationalUnitName = Organizational Unit Name (eg, section)
#organizationalUnitName_default =
commonName = Common Name (eg, your name or your server\'s hostname)
commonName_max = 64
emailAddress = Email Address
emailAddress_default = $ENV::KEY_EMAIL
emailAddress_max = 40
# SET-ex3 = SET extension number 3
[ req_attributes ]
challengePassword = A challenge password
challengePassword_min = 4
challengePassword_max = 20
unstructuredName = An optional company name
[ usr_cert ]
basicConstraints=CA:FALSE
nsComment = "OpenSSL Generated Certificate"
# PKIX recommendations harmless if included in all certificates.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always
[ server ]
# JY ADDED -- Make a cert with nsCertType set to "server"
basicConstraints=CA:FALSE
nsCertType = server
nsComment = "OpenSSL Generated Server Certificate"
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
[ v3_ca ]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer:always
basicConstraints = CA:true
[ crl_ext ]
authorityKeyIdentifier=keyid:always,issuer:always
В принципе, всё по дефолту.
Вызывается: newcert.sh имя_сертификата
#!/usr/local/bin/bash
cd /usr/local/etc/openvpn/scripts
export KEY_CONFIG="/usr/local/etc/openvpn/scripts/openssl.cnf"
export KEY_DIR="/usr/local/etc/openvpn/scripts/keys" # Каталог, в котором создаются ключи
export KEY_SIZE=1024 # Длина ключа
export KEY_COUNTRY="RU"
export KEY_PROVINCE="RU" # Значение должно совпадать со значением в CA сервера
export KEY_CITY="Your_city" # Значение должно совпадать со значением в CA сервера
export KEY_ORG="Your_company" # Значение должно совпадать со значением в CA сервера
export KEY_EMAIL="mail@mail.ru"
cd /usr/local/etc/openvpn/scripts
export NEWKEY_NAME=$1 # Будет содержать имя последнего созданного сертификата
./build-key $NEWKEY_NAME # Создание сертификатов
echo $NEWKEY_NAME
if [ ! -d /usr/local/etc/openvpn/clients/$NEWKEY_NAME ]; then
mkdir /usr/local/etc/openvpn/clients/$NEWKEY_NAME
else echo "Каталог существует";
fi
cp $KEY_DIR/ca.crt /usr/local/etc/openvpn/clients/$NEWKEY_NAME/
cp $KEY_DIR/$NEWKEY_NAME.* /usr/local/etc/openvpn/clients/$NEWKEY_NAME/ # Копируем все сертификаты в каталог с именем клиента для последующей выдачи ему.
ls -la /usr/local/etc/openvpn/clients/$NEWKEY_NAME # Любуемся
openssl.cnf
HOME = .
RANDFILE = $ENV::HOME/.rnd
oid_section = new_oids
[ new_oids ]
####################################################################
[ ca ]
default_ca = CA_default # The default ca section
####################################################################
[ CA_default ]
dir = $ENV::KEY_DIR # Where everything is kept
certs = $dir # Where the issued certs are kept
crl_dir = $dir # Where the issued crl are kept
database = $dir/index.txt # database index file.
new_certs_dir = $dir # default place for new certs.
certificate = $dir/ca.crt # The CA certificate
serial = $dir/serial # The current serial number
crl = $dir/crl.pem # The current CRL
private_key = $dir/ca.key # The private key
RANDFILE = $dir/.rand # private random number file
x509_extensions = usr_cert # The extentions to add to the cert
default_days = 3650 # how long to certify for
default_crl_days= 30 # how long before next CRL
default_md = md5 # which md to use.
preserve = no # keep passed DN ordering
policy = policy_match
# For the CA policy
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
# For the 'anything' policy
# At this point in time, you must list all acceptable 'object'
# types.
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
####################################################################
[ req ]
default_bits = $ENV::KEY_SIZE
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca # The extentions to add to the self signed cert
string_mask = nombstr
# req_extensions = v3_req # The extensions to add to a certificate request
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = $ENV::KEY_COUNTRY
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = $ENV::KEY_PROVINCE
localityName = Locality Name (eg, city)
localityName_default = $ENV::KEY_CITY
0.organizationName = Organization Name (eg, company)
0.organizationName_default = $ENV::KEY_ORG
organizationalUnitName = Organizational Unit Name (eg, section)
#organizationalUnitName_default =
commonName = Common Name (eg, your name or your server\'s hostname)
commonName_max = 64
emailAddress = Email Address
emailAddress_default = $ENV::KEY_EMAIL
emailAddress_max = 40
# SET-ex3 = SET extension number 3
[ req_attributes ]
challengePassword = A challenge password
challengePassword_min = 4
challengePassword_max = 20
unstructuredName = An optional company name
[ usr_cert ]
basicConstraints=CA:FALSE
nsComment = "OpenSSL Generated Certificate"
# PKIX recommendations harmless if included in all certificates.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always
[ server ]
# JY ADDED -- Make a cert with nsCertType set to "server"
basicConstraints=CA:FALSE
nsCertType = server
nsComment = "OpenSSL Generated Server Certificate"
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
[ v3_ca ]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer:always
basicConstraints = CA:true
[ crl_ext ]
authorityKeyIdentifier=keyid:always,issuer:always
В принципе, всё по дефолту.
Подписаться на:
Сообщения (Atom)