На хабре регулярно публикуют разнообразные bash-скрипты, попроще и посложнее — внесу и я свою лепту.
Так сложилось, что я делаю много фотографий телефоном — по этой причине захотелось иметь способ автоматически сливать их на комп. Данный скрипт запрашивает список файлов на телефоне, сверяет его с локальным списком и загружет недостающие файлы. Он опирается на утилиту obexftp, доступную в большинстве дистрибутивов. У меня он висит в cron'e на 6 утра — довольно удобно. Вообще с его помощью можно получать не только фотографии — в целом, это простенькая утилита синхронизации данных.
Замечания по использованию и сам скрипт под хабракатом.
Для того, чтобы пользоваться этим скриптом вам достаточно выставить корректные значения этих переменных:
DEVICE — bluetooth-адрес вашего устройства, можно узнать при помощи команды «hcitool scan».
REMOTE_DIR, LOCAL_DIR — удаленные и локальные папки с данными.
TMP_DIR — временная папка
VERBOSE — «говорливость» по-умолчанию, «yes» или «no». также управляется ключем "-v"
FILE_FORMAT — регулярное выражение (sed) на имена файлов. для того чтобы получать все файлы: [^\"]*
Собственно скрипт:
Так сложилось, что я делаю много фотографий телефоном — по этой причине захотелось иметь способ автоматически сливать их на комп. Данный скрипт запрашивает список файлов на телефоне, сверяет его с локальным списком и загружет недостающие файлы. Он опирается на утилиту obexftp, доступную в большинстве дистрибутивов. У меня он висит в cron'e на 6 утра — довольно удобно. Вообще с его помощью можно получать не только фотографии — в целом, это простенькая утилита синхронизации данных.
Замечания по использованию и сам скрипт под хабракатом.
Для того, чтобы пользоваться этим скриптом вам достаточно выставить корректные значения этих переменных:
DEVICE — bluetooth-адрес вашего устройства, можно узнать при помощи команды «hcitool scan».
REMOTE_DIR, LOCAL_DIR — удаленные и локальные папки с данными.
TMP_DIR — временная папка
VERBOSE — «говорливость» по-умолчанию, «yes» или «no». также управляется ключем "-v"
FILE_FORMAT — регулярное выражение (sed) на имена файлов. для того чтобы получать все файлы: [^\"]*
Собственно скрипт:
Copy Source | Copy HTML
- #!/bin/bash
-
- DEVICE="00:1A:75:C5:28:FB"
- REMOTE_DIR="/Memory Stick/DCIM/100MSDCF"
- LOCAL_DIR="$HOME/mobile_phone/photo/"
- TMP_DIR="/tmp"
- VERBOSE="no"
- FILE_FORMAT="DSC.....\.JPG"
-
- if [ "$1" == "-v" ]; then
- VERBOSE="yes"
- fi
-
- tmplist="$TMP_DIR/getphoto_$PPID"
-
- obexftp -b "$DEVICE" -l "$REMOTE_DIR" > "$tmplist" 2>/dev/null
-
- if [ ! "$?" ]; then
- rm -f -- "$tmplist"
- echo "No mobile phone found. Please check the bluetooth connection."
- exit 1
- fi
-
- cd "$LOCAL_DIR"
-
- return_code=0
-
- grep '<file' -- "$tmplist" |
- sed -e 's/<file name=\"\('$FILE_FORMAT'\)\".*/\1/' | while read filename
- do
- if ! test -a "$filename" ; then
- obexftp -b "$DEVICE" -g "$REMOTE_DIR/$filename" 1>/dev/null 2>/dev/null
- if [ ! "$?" ]; then
- echo "Error downloading file: '$filename'"
- return_code=2
- else
- if [ "$VERBOSE" == "yes" ]; then
- echo "File '$filename' downloaded successfully"
- fi
- fi
- fi
- done
-
- rm -- "$tmplist"
-
- exit "$return_code"