сценарий оболочки для получения размера изображения в пикселях

У меня это сработало

ip route flush dev eth0
ip route add 10.77.132.0/24 dev eth0
ip route add 0.0.0.0/0 via 10.77.132.1
1
27.04.2015, 00:37
2 ответа

вот способ получить высоту и ширину за один шаг:

IFS=x read w h < <(identify "$file" | grep -oP '\d+x\d+(?=\+)')

identify является частью пакета ImageMagick.

Ваш "$ far" определенно не то, что вам нужно:

for dir in */OEBPS/image/; do
    for image in "$dir"/*.{jpg,png,jpeg}; do
        IFS=x read w h < <(identify "$image" | grep -oP '\d+x\d+(?=\+)')
        echo $((w*h)) "$image"
    done | sort -n | tail -1 | {
        read size file
        echo "largest in $dir is $file"
    }
done

На самом деле, identify может занимать несколько файлов, поэтому более эффективный метод:

for dir in */OEBPS/image/; do
    identify "$dir"/*.{jpg,png,jpeg} |
    awk '{split($(NF-6), a, /x/); split($0, b, /[[]/); print a[1]*a[2], b[1]}' |
    sort -n | tail -1 | {
        read size file
        echo "largest in $dir is $file"
    }
done

Команда awk немного сложна, потому что я хотите обрабатывать имена изображений, которые могут содержать пробелы

3
29.04.2021, 00:29

ssh предоставляет подключенный поток из локальной системы, на которой выполняется rsync , в другой экземпляр, запущенный на удаленном сервере. Локальный rsync запускает его как часть процесса подключения ssh - это не тот же экземпляр rsync , который может выполняться как демон на этом удаленном сервере.


Что такое ssh stream ?

ssh stream - это то, что используется при ssh в удаленной системе. Возможно, вы предпочтете назвать его ssh сеансом . Хорошо. Например, ssh snow@grumpy.example.net соединит вас с этой удаленной системой и даст вам интерактивный сеанс. Все, что вы ввели локально, будет приниматься и действовать удаленно, и все, что создано удаленно, будет представлено вам локально.

Аналогично, ssh -t snow@doc.example.net vi/etc/hosts установит соединение для запуска vi/etc/hosts в удаленной системе, как если бы вы использовали его локально. (Флаг -t указывает ssh на то, что удаленная команда vi выполняется на псевдотерминале; в противном случае он пропустит этот уровень сложности.)

Теперь для rsync подключение устанавливается локальным экземпляром с помощью чего-то вроде ssh snow@bashful.example.net rsync --server -nlogDtpre.iLsf {local_path} {remote_path}. Это позволяет локальному rsync взаимодействовать с удаленным rsync по соединению так же, как для доступа к тому же удаленному серверу. Удаленный экземпляр rsync знает, что он является сервером, из-за флагов, которые он был предоставлен при запуске локальным экземпляром.

Вы можете увидеть, как rsync был вызван удаленно, запустив что-то вроде ssh snow@dopey.example.net 'ps -ef | grep [r] sync' во время выполнения rsync .

Почему бы просто не rsync говорить напрямую без ssh ?

Преимущество использования ssh в двух случаях

  1. Это хорошо известный протокол, и механизмы аутентификации и входа в удаленную систему хорошо понятны (тем, кто должен ее понимать) и доверены
  2. Он обеспечивает защищенный и зашифрованный канал, по которому любой Без этого уровня rsync придется либо реализовать собственное шифрование, либо игнорировать проблему. И то и другое опасно в современном мире, подключенном к Интернету.
-121--53507-
Host *
    IdentityFile ~/.ssh/my_key_rsa.pub

Здесь указан неверный файл ключа. Необходимо указать файл закрытого ключа , а не файл открытого ключа . Файл закрытого ключа имеет расширение .pub :

Host *
    IdentityFile ~/.ssh/my_key_rsa
-121--289883-
#!/bin/bash
file=""
max=0
for f in /OEBPS/image/*{png,jpg,jpeg}
do
  id=$(identify "$f") 
  size=$(echo ${id} | sed -r 's/.* (JPEG|PNG) ([0-9]+)x([0-9]+) .*/\2*\3/')   
  area=$(($size))
  if (( area >= max ))
  then
    max=$area
    file="$f"
  fi
done
echo $max $file
  • Не используйте ls для итерации над файлами в сценариях - пробелы в именах файлов будут тормозить их.
  • Не cd .
  • Для поиска самого большого файла по областям сортировка не требуется.
  • Для выполнения арифметических операций в bashтребуется не expr , а $ ((a * b)).

Определение потребностей ImageMagick .

Ошибка команды sed , если имя файла выглядит слишком близко, как в выходных данных identify .

0
29.04.2021, 00:29

Теги

Похожие вопросы