Опишу как быстро настроить передачу файлов с телефона/на телефон по bluetooth в linux.
Способ будет ориентирован на то, что вы подключаете свой bluetooth-адаптер нечасто и только когда есть необходимость работы с телефоном: все службы и графическая утилита будут запускаться автоматически при подключении адаптера.
Я пошел по пути наименьшего сопротивления и установил пакет kdebluetooth со всеми необходимыми зависимостями (в т.ч. пакет bluez-utils - основное linux-решение для такого рода задач).
Теперь подключаем наш bluetooth usb-адаптер и смотрим вывод dmesg и lsusb для того, чтобы убедится, что ОС его благополучно определила.
Дальше создадим файл /usr/local/bin/ssbt (start-stop bluetooth) со следующем содержанием:
Не забудем сделать его исполняемым и заменить "some_user" на имя своего пользователя.
#!/bin/sh
USER=some_user
export DISPLAY=:0.0
ps aux | grep kbtobexclient > /dev/null 2>&1
if [ $? == 0 ]; then
echo "Already running!"
exit 1;
fi
/etc/init.d/bluetooth start
su - $USER -c "kbluetoothd"
su - $USER -c "kbtobexclient"
/etc/init.d/bluetooth stop
killall kbluetoothd
Этот скрипт будет поднимать всю необходимую систему bluetooth и запускать графическую утилиту для передачи файлов kbtobexclient.
После работы же в kbtobexclient и закрытия программы скрипт будет самостоятельно гасить все ранее запущенные им службы.
Теперь для автоматизации организуем автозапуск этого скрипта при каждом включении usb-адаптера в наш ПК.
Для этого добавим udev-правило (коротко: значения product и vendor взяты из вывода lsusb, для подробных разъяснений см. ссылки раз и два) в один из файлов /etc/udev/rules.d/ (лучше для таких целей создать собственный файл с названием, стоящим по алфавиту выше остальных). Собственно текст правила:
# For bluetoothГотово: теперь с помощью kbtobexclient можно будет слать файлы на телефон, а демон kbluetoothd будет автоматически принимать файлы.
BUS=="usb", SYSFS{idVendor}=="0a12", SYSFS{idProduct}=="0001", RUN+="/usr/local/bin/ssbt"
Ключевые слова: bluetooth, bluez, kdebluetooth, Linux
Ситуация для примера такая: есть два сервера за шлюзом.
Правила ip-tables настроены так, что 22 порт просто пробрасывается на первый сервер, соединения же на 3500-й порт шлюза пробрасываются на 22-й порт второго сервера.
В результате по одному ip-адресу доступны 2 ssh-сервера на разных портах.
И теперь при попытке подсоединиться ко второму возникает конфликт ключей, т.к. ключ второго сервера не совпадает с сохраненным в файле known_hosts ключем первого сервера.
ssh разрывает соединение, предотвращая (по её мнению) подмену ip-адреса ssh-сервера:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Можно конечно совсем отключить проверку ключей, но это является не самым безопасным решением.
Альтернативное же решение (может опять же не лучшее, но первое пришедшее мне в голову после беглого прочтения манов ssh) - создать для каждого из двух серверов свой файл для хранения ключей.
Для этого создаем конфиг (~/.ssh/config) следующего содержания:
Host remote1
Hostname 192.168.1.1
Port 22
UserKnownHostsFile remote_file1
Host remote2
Hostname 192.168.1.1
Port 3500
UserKnownHostsFile remote_file2
Где remote_fileX - полные пути к альтернативным файлам known_hosts (логично дать им названия, содержащие имя сервера, а также положить их в ~/.ssh/)
Можно также добавить имена пользователей для серверов с помощью добавления (после имен соответствующих серверов) в конфиг строк вида:
User имя_пользователя
Это позволит не вводить имена каждый раз при обращении к серверам.
Всё, теперь оба наших сервера доступны с помощью следующих простых команд:
$ ssh remote1
$ ssh remote2
Ключевые слова: ssh
В одном из своих предыдущих постов я отписывал как вставлять произвольный текст (тот же программный код со спецсимволами) в сообщения на Blogger.
Теперь же случайно наткнулся на куда более удобный и функциональный способ: с помощью всем известного редактора GVim, который позволяет в один клик (пункт меню "Сделать HTML с подсветкой") не только создать html, но и сохранить выбранную ранее в редакторе подсветку синтаксиса.
Думаю будет полезно не только пользователям Vim, тем более, что изучать редактор для использования этой функции вовсе не обязательно.
В подтвержедие моих слов скриншот:
... И пример вставленного текста (следует вставлять код окруженный в сгенерированном html-файле тегом "body"):
#include <stdio.h>
int main()
{
int i;
i = 1;
return 0;
}