Три шага:
Создайте ~/.ssh/config
на SERVER1
со всем необходимым для подключения к SERVER2
, например:
Host SERVER2
Порт 50000
Пользователь user2
Имя хоста localhost
IdentityFile ~/path/to/pem/file.pem
Попробуйте подключиться к хостам SERVER2
без аргументов (с SERVER1
после инициирования проброса портов):
ssh SERVER2 # работает?
Если нет, добавьте -vvv
и выясните, что пошло не так.
Запустите команду rsync:
ssh -i ~/path/to/pem/file.pem -R localhost:50000:SERVER2:22 ubuntu@SERVER1 \
'rsync -vur /home/ubuntu/test SERVER2:/home/ubuntu/test'
Обратите внимание, что ключ аутентификации должен быть доступен на SERVER1
, если вы хотите сделать это таким образом. Лучше создать новый ключ там, чем копировать закрытый ключ с вашей машины.
mplayer
поставляется с утилитой midentify
, которая делает в основном то, что вы хотите.
Вывод выглядит как присвоение переменных, поэтому его довольно легко использовать в сценариях / просто для синтаксического анализа.
Если midentify
не установлен с вашим пакетом mplayer
, у вас может быть скрипт midentify.sh
в / usr / share / mplayer
или что-то в этом роде. В противном случае midenfify
просто запускает mplayer
с определенным набором аргументов:
#!/bin/sh
#
# This is a wrapper around the -identify functionality.
# It is supposed to escape the output properly, so it can be easily
# used in shellscripts by 'eval'ing the output of this script.
#
# Written by Tobias Diedrich <ranma+mplayer@tdiedrich.de>
# Licensed under GNU GPL.
if [ -z "$1" ]; then
echo "Usage: midentify.sh <file> [<file> ...]"
exit 1
fi
mplayer -vo null -ao null -frames 0 -identify "$@" 2>/dev/null |
sed -ne '/^ID_/ {
s/[]()|&;<>`'"'"'\\!$" []/\\&/g;p
}'
-ao
, -vo
и ] -frames
параметры не позволяют mplayer
фактически воспроизводить клип. Остальное просто форматирование.
Пример:
$ midentify some_random.avi
ID_VIDEO_ID=0
ID_AUDIO_ID=0
...
ID_VIDEO_BITRATE=258488
ID_VIDEO_WIDTH=320
ID_VIDEO_HEIGHT=240
ID_VIDEO_FPS=29.917
...
ID_LENGTH=4216.76
...
ID_AUDIO_BITRATE=64000
ID_AUDIO_RATE=22050
...
mediainfo также предоставляет вам много информации:
$ mediainfo IMGP3793.AVI
General
Complete name : IMGP3793.AVI
Format : AVI
Format/Info : Audio Video Interleave
File size : 121 MiB
Duration : 2mn 16s
Overall bit rate : 7 439 Kbps
Video
ID : 0
Format : JPEG
Codec ID : MJPG
Duration : 2mn 16s
Bit rate : 7 339 Kbps
Width : 640 pixels
Height : 480 pixels
Original height : 960 pixels
Display aspect ratio : 4:3
Frame rate : 30.288 fps
Color space : YUV
Chroma subsampling : 4:2:2
Bit depth : 8 bits
Scan type : Interlaced
Compression mode : Lossy
Bits/(Pixel*Frame) : 0.789
Stream size : 119 MiB (99%)
Audio
ID : 1
Format : PCM
Format settings, Endianness : Little
Format settings, Sign : Unsigned
Codec ID : 1
Duration : 2mn 16s
Bit rate mode : Constant
Bit rate : 88.2 Kbps
Channel count : 1 channel
Sampling rate : 11.025 KHz
Bit depth : 8 bits
Stream size : 1.44 MiB (1%)
Alignment : Aligned on interleaves
Interleave, duration : 33 ms (1.00 video frame)
Просто перенаправить на https://market.android.com/details?id=...
; Приложение Market настроено как обработчик для этих URL-адресов.
Различные модули ведут себя по-разному при многократном использовании одной и той же опции. Я знаю, вы можете сказать console =
несколько раз, и вы получаете несколько консолей (мы используем его для машин с основными консолями как на их framebuffers, так и на последовательный порт).
Однако можно иметь только один корневой раздел, поэтому root =
почти наверняка перезаписывает предыдущее видимое значение, почти наверняка слева направо. Это подтверждается источником ядра, в init/do _ mounts.c
функция root _ dev _ setup ()
отвечает за действие над опцией root =
, и все, что она делает, это сохраняет ключ параметра в переменной. Параметр bootparam root = 31:0
переопределяется параметром root =/dev/mtdblock2
, или, по крайней мере, так обстоит дело в 2,6,25 исходном дереве, которое я только что проверил.
По пути, если вы компетентны С, функция name _ to _ dev _ t ()
в том же файле отвечает за разбор значения root =
, и очень просветляет!
Обозначение x: y
является стандартным униксизмом для мажор: минор, что является способом идентификации устройств Unices. Традиционно major был 8-битным номером, идентифицирующим драйвер для аппаратного обеспечения, и minor был 8-битным номером, идентифицирующим само устройство. Существует два пространства имен для основных
чисел: символьные устройства и блочные устройства. Вы можете увидеть как с помощью cat/proc/devices
, так и с помощью ls -la/dev
. Пример:
ls -la /dev/zero /dev/sda
brw-rw---- 1 root disk 8, 0 Jan 12 22:01 /dev/sda
crw-rw-rw- 1 root root 1, 5 Jan 12 22:01 /dev/zero
первый столбец определяет тип драйвера ( b
для блока, c
для символа). Два столбца слева от Jan
являются основными и вспомогательными числами в формате major, minor
.
Можно присвоить root =
любому блочному устройству, независимому от его имени, используя нотацию мажор: минор.
Полный список номеров устройств находится в исходном дереве ядра в разделе Documentation/devices.txt
. 31:0, похоже, относится к/dev/rom0, первой плате ПЗУ в системе.
Можно использовать команду file .