У меня это сработало
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
вот способ получить высоту и ширину за один шаг:
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 немного сложна, потому что я хотите обрабатывать имена изображений, которые могут содержать пробелы
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
в двух случаях
rsync
придется либо реализовать собственное шифрование, либо игнорировать проблему. И то и другое опасно в современном мире, подключенном к Интернету. 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
Определение потребностей ImageMagick .
Ошибка команды sed , если имя файла выглядит слишком близко, как в выходных данных identify .