SSHdとかのポート番号をウェルノウンポート以外で待ち受けたいのだけど、ぱっといい値が思いつかないので スクリプト化しました。
#!/bin/bash #ポート開放用スクリプト。0~65535番号の中からIPとキーワードで決定 _usage() { cat <<EOF $(basename ${0}) is a tool for calculating port number Usage: $(basename ${0}) [IPAddress] EOF } _check_Ip(){ IP=$(cat -) IP_CHECK=$(echo ${IP} | egrep "^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$") if [ ! "${IP_CHECK}" ] ; then echo ${IP} is not IP Address. exit 1 fi } _calc_Port(){ ori_Number=$(echo $@ | awk -F. '{ print $1*2^24 + $2*2^16 + $3*2^8 + $4}') while [ ${ori_Number} -ge 65535 ] do ori_Number=`expr $ori_Number / $your_Secret_Number` done echo $ori_Number } if [ $# -ne 1 ]; then _usage exit 1 fi if [ -p /dev/stdin ]; then cat - else echo $@ fi | _check_Ip if [ $? -eq 0 ]; then echo "Input your secret number" read your_Secret_Number _calc_Port $@ ${your_Secret_Number} fi
以下のコマンドで/etc/servicesに定義されていないことを確認。
% grep 出力されたポート番号 /etc/service
ヒットしてもListenしてなければいいと思う。