Если я понимаю правильно, Вы хотите туннель OpenVPN и туннель PPTP, каждый, который направит туннелированный трафик eth0, но каждый со своим собственным IP.
Если я неправ в этом, попытайтесь разъясниться, и я сделаю то, чему я могу для помощи. Но, я полагаю, что этот сценарий сделает то, что Вы просите.
#!/bin/bash
# This enables forwarding in the kernel.
echo 1 > /proc/sys/net/ipv4/ip_forward
# This will allow all return traffic to pass back to the originating socket
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# This permits forwarding traffic that came in either tunnel and bound out eth0.
# Note: This does not explicitly permit forwarding between tunnels.
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -A FORWARD -i ppp+ -o eth0 -j ACCEPT
# This blocks all forwarding that is not explicitly permitted.
# Removing this line would be unsafe.
iptables -A FORWARD -j DROP
# These lines will SNAT the traffic coming from each tunnel to the
# appropriate IP address.
iptables -t nat -A POSTROUTING -i tun0 -o eth0 -j SNAT --to-source 1.1.1.1
iptables -t nat -A POSTROUTING -i ppp+ -o eth0 -j SNAT --to-source 1.1.1.2
Запущение этого скрипта многократно вызовет правила расти. Следующий сценарий сбросит Ваши правила брандмауэра и отключит передачу. Я обычно включаю это в начале своих сценариев брандмауэра, но я не знаю, безопасно ли для Вас сделать так, таким образом, я включал его отдельно.
#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t filter -F
iptables -t nat -F
$ wget https://github.com/b4winckler/macvim/tarball/v7.3-53
$ tar xzf v7.3-53
$ cd b4winckler-macvim-730064c/
$ ./configure --enable-rubyinterp
$ make
$ make install (or copy things manually to where you want...)
mediainfo
в своем частичном ответе.
Мне удалось создать команду, которая добилась восстановления временных меток. Она перебирает соответствующие файлы, и для каждого файла [115298]mediainfo[115299] считывает метаданные, [115300]grep[115301] и [115302]sed[115303] выбирает и форматирует метку времени, и [115304]touch[115305] применяет ее.
Например, вот регекс, который корректно соответствует обоим форматам вывода из моего [115308]*. mp4[115309] таких файлов, как [115310]UTC 2013-11-15 11:36:06[115311], и дополнительно формат примера Уоррена [115312]2014-2-23T09:00:00Z[115313] из [115314]my. mov[115315]:Часть 'выбирать и форматировать', без сомнения, может быть намного короче/убедительнее; она выглядит громоздкой для меня, но я не очень хорошо разбираюсь в регексах. Тем не менее, команда сработала отлично. Я думаю, что процитировал все правильно, так что она должна работать с любым именем файла. Она может не сработать, если [115306]mediainfo[115307] выводит другой формат, но его легко адаптировать.
И кроме [115316]mediainfo[115317], которую мне фактически пришлось установить вручную из-за того, что она не находилась в репозиториях моего дистрибутива (хотя сейчас она выглядит как новая версия), она должна быть достаточно портативной и полезной для других, если они столкнутся с подобной проблемой.
Примечание: Не забудьте проверить часовые пояса. Согласно страницам GNU [115318]info[115319], [115320] touch[115321], [115322] date[115323] и другим утилитам GNU используется переменная окружения [115324]TZ[115325], если она установлена, и 'правила по умолчанию системы', если они установлены иначе. Чтобы увидеть смещение часового пояса, которое будет использоваться, задайте:
Чтобы изменить его, установите переменную окружения [115326]TZ[115327]:
Если временные метки видео корректны и правильно представлены (т.е. значение времени w.r.t.). часовой пояс представляет собой правильную точку времени), то вы должны убедиться, что дата +%:::z[115329] выводит смещение совпадения для часового пояса метки времени, прежде чем запустить [115330] касание -t[115331] над этими файлами (как описано выше). Используйте [115332]stat[115333] для проверки файлов, так как он показывает смещение по времени (как [115334] дата +%:::z[115335]).[114864].
Следуйте приведенному выше совету Джеймса для MP4 и большинства файлов QuickTime. Для файлов AVI mediainfo
будет выводить Mastered date
, но этот формат в основном не поддается синтаксическому анализу. Установите ffmpeg
, чтобы получить ffprobe
(также известный как avprobe
), затем используйте:
для файла в * .avi; do touch -t "$ (ffprobe" $ file "2> & 1 | grep -m 1 'creation_time' | sed -r 's /.* ([0-9] {4}) - ([0-9] { 2}) - ([0-9] {2}) ([0-9] {2}): ([0-9] {2}): ([0-9] {2}). * / \ 1 \ 2 \ 3 \ 4 \ 5. \ 6 / ') "" $ file "; done
Обратите внимание на мод перед подключением к grep
. Это потому, что ffprobe
использует stderr, а не stdout.
exiftool:
exiftool "-CreateDate>FileModifyDate" FILES or FOLDERS
Имя нужного значения может отличаться в зависимости от формата файла и других факторов. Используйте ниже, чтобы распечатать их:
exiftool -time:all -s FILE