僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
某NASめがけて、共有をたくさん作るスクリプトを書いてみた。
Wireshark に "http && ip addr == $SERVERIP" などやって
表示を絞りこんだ状態で、ブラウザから共有を追加し、POST ほげほげ
と睨めっこ。転送には curl -d を使う。
#!/bin/sh server=$SOME_SERVER pubfile=pub.txt # form1 is a encoded EUC-JP text strig form1=%BF%B7%B5%AC%B6%A6%CD%AD%A5%D5%A5%A9%A5%EB%A5%C0%C4%C9%B2%C3 cmd="cmdadd=${form1}&TimerStatus=&TimerStatusBase=disabled" pass="$UID:$PASS" for pub in `cat $pubfile` do line=`echo -n $pub | nkf -e | url_encode.rb` data="txtShareName=${line}&txtShareComment=${line}&rdoOs=Win&rdoAccess=Off&rdoTrash=Off" curl -u $pass http://${server}/cgi-bin/setup-share.cgi -d $cmd > /dev/null 2>&1 sleep 0.5 curl -u $pass http://${server}/cgi-bin/setup-share-add-in.cgi -d $data >/dev/null 2>&1 sleep 1 done
pub.txt には、追加すべき共有をUTF-8で列挙しておいた。
共有名の末尾に改行がついてしまっていたことに気づくまで暫く嵌る。
url_encode.rb は、以前書いた rubyスクリプト、のはずだけど、色々いじって
よくわからなくなってきた。ので、ここに
#!/usr/bin/env ruby require 'cgi' require 'kconv' while line = gets() puts CGI::escape(line) end
ついでに、それを消すスクリプトも。
#!/bin/sh server=$SOME_SERVER pubfile=pub.txt # form1 is a url encoded EUC-JP text strig cmd="cmdDel=%B6%A6%CD%AD%A5%D5%A5%A9%A5%EB%A5%C0%BA%EF%BD%FC" form1='rdoShare=36&${cmd}&TimerStatus=&TimerStatusBase=disabled' pass="$UID:$PASS" for pub in `cat $pubfile` do line=`echo -n $pub | nkf -e | url_encode.rb` data="txtShareName=${line}&txtShareAccess=%A4%CA%A4%B7&txtShareOs=Win&txtShareComment=${line}" curl -u $pass http://${server}/cgi-bin/setup-share2.cgi -d "$form1" >/dev/null 2>&1 sleep 0.5 curl -u $pass http://${server}/cgi-bin/setup-share-del-in.cgi -d $data >/dev/null 2>&1 sleep 1 done
ちなみにこのNASは結構な年代モノなので、スクリプトの使いまわしが どこまで利くかどうかは、不明。
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。