Поскольку Вы уже используете Ubuntu, я рекомендую их Серверное руководство, которое предлагает основной обзор единого набора сервисов по умолчанию.
Также взгляните на безопасность Сервера Linux от O'Reilly. На самом деле просто ищите Amazon довольно много предложений.
Поиск с помощью Google стабилизирующего контрольного списка сервера, кажется, возвращает некоторую пользу, практичную, способы быстрого выяснения, неправильно ли что-то очевидно с Вашей установкой.
Наконец, направляйтесь в безопасность serverfault, разделяют и спрашивают далеко.
Править: также, ICMP должен быть заблокирован на основе сообщения. Посмотрите, что Пакет ICMP Фильтрует для деталей.
Это работает. Сохраните его к increment.bash
затем введите bash increment.bash 2
получить постепенное увеличение, запускающееся в 2, или bash increment.bash 4
запускаться в 4. Запустится в 2 если ни одно определенное. (Сделанный некоторыми улучшениями туда, где предыдущее на самом деле работает),
#!/bin/bash
if [ $1 ]; then
opt=$1
if [ $opt == "--help" ]; then echo "Usage: $0 [2|4] -- either starting number 2 or 4, to print first number and +1, increment by 3, then continue."; exit 0
elif [ $opt == 2 ]; then i=$opt
elif [ $opt == 4 ]; then i=$opt
fi
else i=2
fi
echo $i; let i++; echo $i;
for (( n=1; $n < 35; n++ )); do
if [ $i == 135 ] || [ $i == 137 ]; then break; fi
i=$[i+3]; echo "$i";
let i++; echo "$i";
done
Здесь это в действии:
$ for i in {2..4..2}; do for type in head tail; do echo ":: $i | $type :: "; bash increment.bash $i | $type; done; done
:: 2 | head ::
2
3
6
7
10
11
14
15
18
19
:: 2 | tail ::
118
119
122
123
126
127
130
131
134
135
:: 4 | head ::
4
5
8
9
12
13
16
17
20
21
:: 4 | tail ::
120
121
124
125
128
129
132
133
136
137
Я не абсолютно уверен, что Вы пытаетесь сделать, но делаете что-то, что просто рассчитывает, та последовательность довольно проста:
i=2 # or 4
while true; do
echo $i
i=$(($i+1))
echo $i
i=$(($i+3))
done
Используя GNU sed для его BEGIN~STEP opiton.
printf "%s\n" {1..137} |tee \
>(sed -nr '2~4H; 3~4H; ${g; s/\n/,/g; s/^,(.*)/\1/p}'>set23) |
sed -nr '4~4H; 5~4H; ${g; s/\n/,/g; s/^,(.*)/\1/p}'>set45
cat set23
cat set45
Вывод
2,3,6,7,10,11,14,15, ... ,130,131,134,135
4,5,8,9,12,13,16,17, ... ,132,133,136,137
Вот один способ создать эти списки чисел: пройдите числа от 1 до $n
, и добавьте их к тому, какой бы ни список является соответствующим. Отрывок ниже использует только портативные конструкции.
recto= verso= i=1
while [ $i -le $n ]; do
if [ $((i % 4)) -le 1 ]; then recto=$recto,$i; else verso=$verso,$i; done
i=$((i + 1))
done
recto=${recto%,} verso=${verso%,}
Вот ksh/bash/zsh версия:
recto= verso=
for ((i=1; i<n; i++)); do
if ((i % 4 <= 1)); then recto=$recto,$i; else verso=$verso,$i; done
done
recto=${recto%,} verso=${verso%,}