Конкатенация строк Bash раньше создавала список параметров

Сначала общность: метки времени крайне важны. Используйте NTP, чтобы синхронизировать часы Вашей системы, удостовериться, что часы не колеблются повсеместно. После этого можно идти дальше к основам.

Я предложил бы p0f и вход рабочего Michal Zalewski его предположений о входящих запросах TCP. Я использую версию 2, но у Zalewski есть версия 3.

CERT в Carnegie Mellon имеет значительно обновленный файл p0f v2.x цифрового отпечатка.

Можно выполнить p0f v2.x в фоновом режиме с вызовом что-то вроде этого:

p0f -f $FPRINTS -d -t -l -o $LOGFILE

$FPRINTS называет файл цифровых отпечатков и $LOGFILE называет файл, в котором заканчивается вывод.

p0f выскажет Вам довольно достойное предположение о том, какую операционную систему Ваш взломщик использует. Вы будете иметь к предположениям координаты p0f с любыми другими данными, которые Вы собираете.

Альтернатива: SinFP3. Я нашел его немного хитрым для установки, поскольку это имело некоторые нестандартные зависимости от модуля Perl.

12
29.08.2014, 00:50
2 ответа

Есть разница между:

PARMS+="... --exclude='.git'"

и

... --exclude='.git'

В первой единственные кавычки находятся внутри самих кавычек, поэтому они буквально присутствуют в подставленном тексте, передаваемом в качестве аргументов в rsync. rsync получает аргумент, значение которого --exclude='.git'. Во второй, одиночные кавычки интерпретируются оболочкой в момент их записи, так как они не находятся внутри самих кавычек, а rsync получает значение --exclude=.git.

В этом случае вам вообще не нужны одиночные кавычки - .git само по себе абсолютно корректное слово оболочки, без специальных символов, поэтому вы можете использовать его буквально в команде.

Для такого рода вещей лучше всего использовать массив array:

PARMS=(-rvu)
PARMS+=(--delete --exclude='.git')
rsync "${PARMS[@]}"

Это строит вашу команду как отдельные слова, причём любые кавычки, которые вы хотите интерпретировать во время записи строки массива, интерпретируются. "${PARMS[@]}" расширяет на каждую запись в массиве в качестве отдельного аргумента, даже если в самом аргументе есть специальные символы или пробелы, поэтому rsync видит то, что вы записали, так, как вы это имели в виду.

17
27.01.2020, 19:55

Помимо ответа @Michael Homer , вы можете использовать bash eval function :

PARMS='-rvu'
PARMS+=" --delete --exclude='.git'"
echo "$PARMS"
eval "rsync ${PARMS} . "'"${TARGET}"'
2
27.01.2020, 19:55

Теги

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