пятница, 27 мая 2011 г.

Синхронизация времени в Linux

Синхронизация времени не маловажная необходимость для компьютеров. Особенно если на ней работает критическая система.

Для синхронизации времени и даты есть специальный протокол NTP - Network Time Protocol.
Для того чтобы наша Linux система автоматически синхронизировалась при запуске системы необходимо установить пакет ntp
$> apt-get install ntp
Далее изменяем конфигурацию. Нам необходимо чтобы наш сервер синхронизировалась с внешним NTP сервером kg.pool.ntp.org и выступал как сервер для локальных компьютеров под сети 192.168.1.0/255.255.255.0, для этого
$> nano /etc/ntp.conf
...
server kg.pool.ntp.org

restrict kg.pool.ntp.org mask 255.255.255.255 nomodify notrap noquery

restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap  #Query access for subnet

restrict 127.0.0.1          #Full access for localhost
...
Настройки готовы.

Для начала убедимся какая время стоит до синхронизации
$> date
Fri May 27 07:00:00 KGT 2011

Вручную синхронизируем время и убеждаемся что синхронизация произошла
$> ntpdate -u kg.pool.ntp.org
27 May 12:29:14 ntpdate[17792]: adjust time server 213.145.129.29 offset -0.001666 sec
$> date
Fri May 27 12:29:18 KGT 2011

Поднимаем службу ntpd как автоматический запуск
$> chkconfig ntpd on

Убедиться произошла ли синхронизация, можно убедиться командой
$> ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*85.115.208.71   213.145.129.29   4 u   62   64  377    1.695    1.269   5.951

вторник, 24 мая 2011 г.

Создание WAP странички в JAVA проекте

Для создания wap странички можно использовать коренные теги. Писать на коренных тегах очень сложно и требуется учитывать особенности каждой модели телефона. Но в интернете предлагается очень хорошая библиотека WURFL (Wireless Universal Resource FiLe).

WURFL - очень легок в использовании. Теги очень похожи на HTML теги.

Чтобы добавить wurfl в веб проекте необходимо скачать wurfl c сайта http://wurfl.sourceforge.net/java/installation.php, подключить wurlftags.jar и xom.jar как библиотеку. Дальше скопировать wurfl.xml в папку /WEB-INF/. И внутри /WEB-INF/web.xml запустить сервлет wurfl следующим образом
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- WAP -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
  
<servlet>
   <servlet-name>WurflServletInit</servlet-name>
   <servlet-class>net.sourceforge.wurfl.wurflapi.WurflServletInit</servlet-class>
   <load-on-startup>1</load-on-startup>
</servlet>

Дальше уже можно писать странички. К примеру напишем страничку авторизации /WebContent/loginForm.jsp. В каждой страничке не забудьте указать taglib wurfl.
<%@ taglib uri="http://net.sourceforge.wurfl/tags" prefix="w" %>

<w:document disable_cache="true">
<w:xmlpidtd>
<w:head>
    <w:title>Login Form</w:title>
</w:head>
<w:body>

<w:form action="loginForm.jsp" enable_wml="true" method="POST">

    Login:
    <w:input name="login" type="text"><w:br>
   
    Password:
    <w:input name="password" type="password"><w:br>

    Remember me:
    <w:select name="rememberMe">
        <w:option value="false">No</w:option>
        <w:option value="true">Yes</w:option>
    </w:select><w:br>
   
    <w:input type="submit" value="Login">

</w:input></w:br></w:br></w:input></w:br></w:input></w:form>
<w:hr>

<w:a href="/help.jsp">Help</w:a>

</w:hr></w:body>
</w:xmlpidtd></w:document>

Вот и готово wap страничка

пятница, 20 мая 2011 г.

Как автоматизировать копирование файлов через SCP без аутентификации

SCP-утилита для удаленного копирования файлов через протокол RCP. Хорошая между прочим утилита для копирования всего через командную строку, задал команду и ввел пароль и все. Но при автоматизации копирования необходимо чтобы копирование шло без аутентификации но так же по шифрованному каналу.

Для таких случаев в SSH предусмотрено метод аутентификация Identity/Pubkey, который полагает обмена ключевыми фразами для соединения хостов. Для этого на клиенте необходимо создать ключ, для этого набираем. Когда требуется вести фразу, ничего не вводите, если введете то при подключении к серверу будет спрашиваться фраза, вместо пароля, а мы ведь хотим чтобы соединение шло без аутентификации.

$> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
....

Итак приватный, публичный ключи у нас готовы теперь необходимо чтобы наш сервер этот ключ распознавал. Для этого на сервере необходимо поменять конфигурацию
/etc/ssh/sshd_config.

$> nano /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys

Удостоверьтесь, что в ней есть строки выше, если комментированы уберите из комментариев, если нет то пропишите. %h означает home директория пользователя. В моем случае я под root и для меня это будет означать /root/.

Теперь как из конфигурацию видно нам необходимо добавить ключ в /root/.ssh/authorized_keys. Этого файла может и не оказаться там где нужно, вы можете ее создать если нету.

Но для начала скопируем наш файл публичный ключ в сервер.
$> scp /root/.ssh/id_rsa.pub root@serveraddress:/root/
Enter password:

Дальше на сервере содержимое id_rsa.pub копируем в authorized_keys.
$> cat /root/id_rsa.pub >> /root/.ssh/authorized_keys

Теперь для теста на клиенте наберем то же самое копирование ключа.
$> scp /root/.ssh/id_rsa.pub root@serveraddress:/root/
В этом случае копирование не должен спрашивать пароль