Esto es lo que escribí, pero estoy seguro de que hay una forma más breve y más elegante de hacerlo.
searchstring=searchparam
filename=test.log
pattern1=ABC
linenums=($(grep -n "${searchstring}" ${filename} | awk -F":" '{print $1}'))
len=${#linenums[@]}
for (( i=0; i<${len}; i++ ));
do
currentline=${linenums[$i]}
relativeendlinearray=($(tail -n +${currentline} ${filename} | grep -n "${pattern1}" | awk -F":" '{print $1}'))
actualendline=$(($currentline+${relativeendlinearray[0]}-1))
index=$currentline
while [ $index -ne 0 ]
do
found=`sed "${index}q;d" ${filename} | grep "${pattern1}"`
if [ -n "$found" ]; then
actualstartline=$index
break;
fi
index=$[$index-1]
done
if [ -n "$found" ]; then
echo ""
else
echo "Log break detected, content across multiple files"
fi
echo "Start Line" ${actualstartline}
echo "Current Line" ${currentline}
echo "End Line" ${actualendline}
sed -n "${actualstartline},${actualendline}p" ${filename}
done
Что-то подобное в вашем файле sshd_config
должно делать то, что вы хотите:
AllowTcpForwarding off
...
Match user user1,user2,user3
AllowTcpForwarding on
Это разрешит переадресацию TCP для трех перечисленных пользователей.
См. sshd _config Match для получения дополнительной информации о том, как работает директива Match
и какие параметры можно установить в блоке соответствия.