К сожалению, нет никакой стандартной утилиты для генерации криптографической контрольной суммы. Существует стандартная утилита для генерации CRC: cksum
; это может быть достаточно для Вашей цели обнаружить изменения в невраждебном окружении.
Я рекомендовал бы использовать SHA1, а не MD5. Нет многих систем, которые имеют утилиту MD5, но № SHA1, и если Вы собираетесь использовать криптографические контрольные суммы, Вы могли бы также использовать алгоритм без известного метода для нахождения коллизий (предполагающий, что Вы также проверяете размер).
Один инструмент это не стандартно, но распространено и может вычислить, обзоры OpenSSL. Это доступно для Cygwin, Debian и OSX, но к сожалению не части стандартной установки на OSX.
openssl dgst -sha1
На OSX 10.6 существует a shasum
утилита, которая также присутствует на Debian (это - часть perl
пакет) и я верю на Cygwin также. Это - сценарий Perl. Большинству систем Unix установили Perl, таким образом, Вы могли связать тот сценарий вместе со своим make-файлом, если Вы волнуетесь по поводу этого сценария, не являющегося доступным везде.
Хорошо, скажем, Вы действительно не можете найти команду, которая работает везде.
Используйте type
встроенный, чтобы видеть, доступна ли команда.
sum=
for x in sha1sum sha1 shasum 'openssl dgst -sha1'; do
if type "${x%% *}" >/dev/null 2>/dev/null; then sum=$x; break; fi
done
if [ -z "$sum" ]; then echo 1>&2 "Unable to find a SHA1 utility"; exit 2; fi
$sum *.org
Можно использовать shell
функционируйте для выполнения отрывка оболочки, когда make-файл загружается, и сохраните вывод в переменной.
sum := $(shell { command -v sha1sum || command -v sha1 || command -v shasum; } 2>/dev/null)
%.sum: %
$(sum) $< >$@
Можно только выполнить команды оболочки в правиле, таким образом, каждое правило, которое вычисляет контрольную сумму, должно содержать код поиска. Можно поместить отрывок в переменную. Помните, что отдельные строки в правилах оценены независимо. Также помните это $
к знакам, которые должны быть переданы оболочке, нужно оставить $$
.
determine_sum = \
sum=; \
for x in sha1sum sha1 shasum 'openssl dgst -sha1'; do \
if type "$${x%% *}" >/dev/null 2>/dev/null; then sum=$$x; break; fi; \
done; \
if [ -z "$$sum" ]; then echo 1>&2 "Unable to find a SHA1 utility"; exit 2; fi
checksums.dat: FORCE
$(determine_sum); \
$$sum *.org
Вам будет нужно два tsocks.conf
, один для каждого сервера SOCKS и затем используют их как:
TSOCKS_CONF_FILE=~/.tsocks-A.conf tsocks some-cmd 10.1.1.2
и
TSOCKS_CONF_FILE=~/.tsocks-B.conf tsocks some-cmd 10.1.1.2
С другой стороны, если серверы SOCKS поддерживают SOCKS4A или SOCKS5, Вы могли бы использовать dante
socksify
вместо tsocks
и используйте имена хостов, если у них есть другое имя хоста на удаленных концах (и укажите который сервер SOCKS использовать на основе имен хостов или доменных имен в dante.conf
).
Во-первых, Вы можете делать все, все это через файлы конфигурации SSH. Это особенно верно, если Вы - просто SSHing в конец машины. Посмотрите, что SSH мультискачкообразно перемещает конфигурацию. С соответственно установленными конфигурациями SSH Вы могли просто присвоить целевые имена и тип ssh servera
или ssh serverb
, вместо того, чтобы иметь необходимость настроить SSH туннелируют и затем ввести tsocks ssh servera
.
Tsocks действительно не может дифференцировать то, что Вы хотите. Один подход должен был бы настроить два файла конфигурации и дать команды для свопинга конфигураций для каждой сети
например:
$ chmod +x /usr/local/bin/tsocksa.sh
$ cat /usr/local/bin/tsocksa.sh
#!/bin/bash
#
#Swaps for Network A
#See /etc/tsocs.conf.main and /etc/tsocks.conf.dest_a
#
sudo cat /etc/tsocks.conf{.main,.dest_a} > /etc/tsocks.conf
и
$ chmod +x /usr/local/bin/tsockss.sh
$ cat /usr/local/bin/tsockss.sh
#!/bin/bash
#
#Swaps for Network S
#See /etc/tsocks.conf.main and /etc/tsocks.conf.dest_s
#
sudo cat /etc/tsocks.conf{.main,.dest_s} > /etc/tsocks.conf
Теперь Вы поместили бы свою сетевую подкачку определенные команды в /etc/tsocks.conf.dest_n
и помещенный Ваши универсальные сети в /etc/tsocks.conf.master
Вы могли также использовать псевдонимы Bash для тех же команд или далее упростить сценарий Bash в функцию, которую можно получить в bashrc.