Skip to content

Instantly share code, notes, and snippets.

@cumet04
Created February 14, 2017 06:44
Show Gist options
  • Save cumet04/ca3e00a845d7cd167a7b19b802691cb1 to your computer and use it in GitHub Desktop.
Save cumet04/ca3e00a845d7cd167a7b19b802691cb1 to your computer and use it in GitHub Desktop.
#!/bin/bash
echo "Content-type: text/plain"
# echo "" # avahi-browseの出力になんか空行があるのでここを省略
# query_paramのパース
get_query_string() {
saveIFS=$IFS
IFS='=&'
parm=($QUERY_STRING)
IFS=$saveIFS
for ((i=0; i<${#parm[@]}; i+=2))
do
eval "$1[${parm[i]}]=${parm[i+1]}"
done
}
declare -A params
get_query_string params
# avahi-browseの実行
if [ ${params[type]} ]; then
avahi-browse -prt ${params[type]} | grep IPv4 | cut -d ";" -f 7,8 | tr ';' '\t' | sort -u
elif [ ${params[name]} ]; then
avahi-browse -aprt | grep ${params[name]} | grep IPv4 | cut -d ";" -f 7,8 | tr ';' '\t' | sort -u
else
echo ""
cat << "EOS"
研究室ローカル / WiFi下のネットワーク(192.168.0.*, 192.168.111.*)でmDNSの検索ができるcgiです.
サービスタイプおよびホスト / サービス名で検索し,ホスト名とIPv4アドレスのペアを取得できます.
検索条件はクエリパラメータで指定します.
例:
IRKitを探す場合 ?type=_irkit._tcp
Raspiを探す場合 ?name=raspberrypi
typeとnameを両方指定した場合はtypeのみ認識されます.
EOS
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment