Поиск по этому блогу

пятница, 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".


суббота, 11 февраля 2012 г.

Complete property Internet Explorer

Оказывается, всеми горячо "любимый" браузер Internet Explorer (речь идёт о 9-й версии сего детища браузеростроения) как всегда, по-своему обрабатывает свойство complete DOM-элемента image (попросту - картинки).

Если просто размещать картинки и прикольные фотки на странице, то ничего страшного в этом нет, ты никогда об этом даже не узнаешь.

Но мы (корейские пионеры), создаём интерактивные приложения на 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 
Indexes 
FollowSymLinks 
MultiViews
AllowOverride all
Order Allow,Deny
Allow from all
</Directory>
#приказываем апачке различать хосты по имени и слушать все ип адреса машины
NameVirtualHost *:80
#задаем автоматическое подключение виртуальных хостов по их имени
<VirtualHost _default_:80>
VirtualDocumentRoot c:/www/_!sites/%0/
ScriptAlias /cgi-bin/ "cgi-bin/"
</VirtualHost>

Всё. Вместо 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

вторник, 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

В принципе, всё по дефолту.