Как к CD в каталог как часть сценария оболочки и делают подсчет слов файлов?

Не наличие полномочий пользователя root препятствует тому, чтобы Вы слушали на портах ниже 1024 в типичных системах Linux.

Таким образом Сквид должен работать хорошо некорневым слушанием на 8 080 пока система, Вы идете, не заблокировал входящий трафик на том порте через брандмауэр или iptables.

Не уверенный, сколько Сквид дескрипторов файлов обычно использует, но если Ваш администратор установил предел для этого, которое могло быть проблемой, а также другими вещами. Если Вы используете функцию фильтрации Сквида (такую как adzapper сценарий, например) - осведомленная икра Сквида процесс для каждого входящего Запроса HTTP и если Ваша учетная запись имеет предел процесса, можно поразить его. (Это могло бы сделать вещь Apache перед ветвлением также, это было некоторое время, так как я играл с squid.)

К порту вперед таким образом Вы описываете, Вам нужен некоторый тип средства передачи, проходческого щита или прокси, работающего на первой машине, передающей второй машине. Таким образом, Вы были бы "SSH туннелировать" в неограниченную машину, и Вам нужна программа, работающая на неограниченной машине, которая принимает трафик в порте и затем "reforwards" это к другому хосту. Ваш туннель затем имеет 2 транзитных участка. Возможно rinetd мог сделать это для Вас легко.

2
24.12.2013, 09:11
2 ответа

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

Теперь, использование сценария не так плохо, как это звучит и на самом деле довольно просто, так как можно передать сценарий по STDIN.

function host_file_count() {
 ssh -o StrictHostKeyChecking=no david@"$1" bash -s <<'EOI'
  dir_last="$(ls -dt1 /bat/data/snapshot/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] | head -n 1)"
  count="$(ls -1 "$dir_last"/ | wc -l)"
  echo "$(hostname): $dir_last=$count"
EOI
}
host_file_count machineB
host_file_count machineC

В основном это просто подает сценарий в STDIN ssh который в свою очередь передает STDIN bash -s на удаленном хосте.
Другое преимущество выполнения его, которым этот путь состоит в том, что Вы не должны выполнять несколько ssh команды для получения результата.


Обратите внимание, что многие скажут Вам не анализировать ls. Таким образом ниже другой сценарий, который делает то же, но без использования ls.

function host_file_count() {
 ssh -o StrictHostKeyChecking=no david@"$1" bash -s <<'EOI'
  dirs=( /bat/data/snapshot/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] ) # get a list of matching directories
  dir_last="${dirs[${#dirs[@]} - 1]}" # get the last item in the list
  files=( "$dir_last"/* ) # get the list of files in directory
  count="${#files[@]}" # size of that list
  echo "$(hostname): $dir_last=$count"
EOI
}
host_file_count machineB
host_file_count machineC

примечание: оба из них полностью не тестируются, могут быть незначительные ошибки, но принцип стоит

3
27.01.2020, 22:06
  • 1
    Спасибо за предложение.. Я немного ржав в сценариях удара.. Как делают я, как предполагается, называю host_file_count () методом в моем сценарии оболочки, имеющем в виду, поскольку у меня есть немного объявленных констант. –  arsenal 24.12.2013, 10:04
  • 2
    Это там внизу. host_file_count machineB host_file_count machineC. –  Patrick 24.12.2013, 10:08

Ваша локальная оболочка в интерпретации канала, плюс у Вас есть переменная на неправильной команде:

len1=$( ssh ... user@host sh -c "ls '$dir1' | wc -l" )
0
27.01.2020, 22:06
  • 1
    все еще, это не работает и я получаю длину как 0 всегда.. –  arsenal 24.12.2013, 09:53
  • 2
    Это хорошо работает, если я удаляю sh-c и сохраняю все, как это.. Какая-либо идея, почему? –  arsenal 24.12.2013, 10:01
  • 3
    @TechGeeky sh -c подразумевается. ssh на удаленном хосте в основном передает все аргументы через a sh -c, так определение его является ненужным. С ним, как, Вы входите в большое количество проблем с ssh и wordsplitting (это - сложная ужасная путаница). –  Patrick 24.12.2013, 10:05

Теги

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