Linux: копируем красиво (с прогресс баром)

Все, кто хоть раз использовал wget, видели progress bar скачивания файла. Можно ли что-то подобное сделать и с командой cp?

Легко, как два байта переслать:


#!/bin/sh
cp_p()
{
set -e
strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \
| awk '{
count += $NF
if (count % 10 == 0) {
percent = count / total_size * 100
printf "%3d%% [", percent
for (i=0;i<=percent;i++)
printf "="
printf ">"
for (i=percent;i<100;i++)
printf " "
printf "]\r"
}
}
END { print "" }' total_size=$(stat -c '%s' "${1}") count=0
}

результат работы выглядит так:


cp_p /install/suse-10.3.iso /mnt
75% [===========================================> ]

Бесполезно, но… красиво!

З.Ы. Придумал не я, честно подглядел вот здесь.

MD5 умер. Уязвимость не позволяет его использовать как hash-функцию для проверки целостности программы или подписывания кода.

Вы наверняка уже знаете, что MD5 (Message Digest 5) – это 128-битный алгоритм хэширования, предназначенный для создания отпечатков или дайджестов сообщений произвольной длины. Значительное число программ использует сигнатуры MD5 в качестве контрольной суммы для проверки целостности файлов.
Однако, недавние исследования показали, что и этот алгоритм несовершенен.
Суть эксперимента заключалось в создании двух разных программ, с разными названиями и разной функциональностью; но с одинаковой сигнатурой MD5.
Они взяли MS Visual C++ в качестве компилятора, и написали 2 простейших программы; скомпилировали их и получили 2 исполняемых файла с одинаковой сигнатурой. Исходный текст программы, исполняемые файлы и ключи шифрования доступный по ссылке, приведенной выше; все желающие могут самостоятельно проверить, что сигнатуры этих файлов совпадают.
Таким образом, злоумышленники при серьезном подходе в любой бинарник смогут зашить вирус/троян/или еще какую-нибудь гадость, и измененный бинарник пройдет проверку подписи MD5.
Будте внимательны, и старайтесь не устанавливать программ, сигнатура которых рассчитана с помощью MD5. Сигнатуры SHA-1 на сегодняшний день являются менее уязвимыми для атак, чем сигнатуры MD5; учтите это при установке сторонних программ.

Настройка активного режима linuxdcpp при работе с модемом D-Link DSL-500T

Если Вы пользуетесь файлообменниками Direct Connect, то эта статья – для Вас.
Как известно, в таких файлообменниках можно работать в пассивном или в активном режимах. Пассивный режим прост в настройке, но обладает рядом недостатков. Например, пользователь в пассивном режиме не может скачивать файлы у другого пользователя в пассивном режиме; число результатов поиска может быть ограничено для пользователей пассивного режима операторами хаба.
Активный режим позволяет лучше искать запрашиваемые файлы и снимает многие ограничения обмена файлами; поэтому многие пытаются настроить активный режим.
Особенность работы в активном режиме заключается в том, что при pppoe авторизации работа клиентов Директ Коннект (Strong DC++, FlyLink DC++, LinuxDC++ и многих других) без настройки порт-форвардинга на ADSL-модеме невозможна.
Сейчас я расскажу, как это можно сделать на примере старого доброго модема Длинк ДСЛ-500Т.

1. Заходим в админку модема, авторизуемся:
Вход в панель управления модемом D-Link DSL 500T

2. Ставим галочку Enable UPnP:
Включаем режим UPnP в D-Link DSL 500T

3. Прописываем IP-адреса клиентов, для которых необходимо настроить port forwarding:
прописываем IP-адреса клиентов для настройки port forwarding

4. Далее жмем кнопку Virtual Server и попадаем в меню настройки Port Forwarding:
Настраиваем port forwarding в модеме D-Link DSL-500T

5. Выбераем категорию User и жмем кнопку “Add”. Открывается панель Rule Management:
Port Forwarding Rule Management
Здесь надо создать правило (как показано на скриншоте) и нажать Apply. После этого мы увидим вернемся к скриншоту из пункта 4 и добавим это правило форвардинга портов для интересующего нас IP-адреса.

6. Сохраняем настройки и перегружаем модем:
Save Settings and Reboot ADSL-modem Dlink DSL500T

7. После перегрузки модема снова заходим в админку, во вкладку Status:
Find out your external IP adress

8. И наконец, настраиваем Connection в своем клиенте Директ Коннект:
Set LinuxDC++ into Active Mode via manual port forwarding
Обязательно указываем тот же самый IP адрес, который Вы узнали из пункта 7.
Все, можно коннектиться к хабу и качать без ограничений.
Один только минус возможен у активного соединения. Некоторые провайдеры дают динамический внешний IP-адрес; после перезагрузки модема он может измениться. В этому случае, в настройках LinuxDX++ или любого другого клиента DirectConnect следует установить текущий внешний IP-адрес ADSL-модема.

Качайте на здоровье!

И снова о безопасности. VPN vs OpenVPN, и как все это настроить.

Вот здесь я обещал, что расскажу поподробнее о настройке OpenVPN. Пришло время выполнить это обещание.

VPN и OpenVPN – это такая замечательная штука, которая позволяет объединить несколько компьютеров в одну общую сеть через открытые каналы; и при этом обеспечивается высокая безопасность соединения – за счет шифрования передаваемых данных.

Основное преимущество VPN соединения – это простота настройки у клиентов. Оно настраивается буквальной в 3-4 клика мыши под Windows XP; поэтому в компаниях, которые могут предоставлять доступ в свою корпоративную сеть, предпочитают давать своим сотрудникам именно VPN соединения.

Минусов у VPN соединения тоже достаточно. Например, оно не всегда работает при соединении через GPRS (проверено на МТС, без услуги Реальный IP Адрес VPN не работает).

Для себя я предпочел настроить OpenVPN соединение. На мой взгляд, оно удобнее – во-первых, оно позволяет не только шифровать трафик, но и неплохо его сжимать. Во вторых, я сам могу решать, по какому соединению будет работать OpenVPN (TCP или UDP), и могу выбрать тот порт, который мне нужен. В третьих, длину ключа шифрования и периодичность смены ключа я тоже определяю сам. Такая гибкость настройки мне очень нравится.

Недостатки у OpenVPN тоже есть. Наппример, если установлен антивирус Касперского, то OpenVPN может не работать. Меня это не расстраивает, поскольку я в основном использую Linux.

И все-таки мне удалось настроить VPN соединение поверх GPRS от МТС без услуги Реальный IP адрес.
Все оказалось просто, надо сначала установить OpenVPN соединение поверх GPRS, и уже поверх OpenVPN установить соединение VPN. Звучит страшно, выглядит тоже не очень… Но работает.
В этом случае вышестощий провайдер не сможет помешать установке VPN-соединения, поскольку он не будет знать о используемых портах и передаваемых данных.

Дополнено 12.09.2008
Пример конфигурационных файлов OpenVPN:

### Конфигурация клиента
remote xxx.yyy.zzz.aaa 1194
dev tap
ifconfig 192.168.20.11 255.255.255.0
route-gateway 192.168.20.13
redirect-gateway
push “dhcp-option DNS 192.168.20.13″
secret key.txt
comp-lzo

### Конфигурация сервера
dev tap
ifconfig 192.168.20.13 255.255.255.0
push “redirect-gateway def1″
push “dhcp-option DNS xxx.yyy.zzz.aaa”
secret key.txt
comp-lzo

Ключ key.txt надо сгенерировать самостоятельно, например, на сервере, и передать по безопасному каналу клиенту (через sftp или scp). После этого надо перезапустить OpenVPN на сервере и на клиенте, все будет работать.

Надеюсь, мой опыт окажется полезным и для Вас.