トップ «前の日記(2010-10-22(Fri)) 最新 次の日記(2010-10-28(Thu))» 編集

屑俺日記

僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。


2010-10-27(Wed) 昨日からぐっと冷えて、今朝は小雨気味

submitなスクリプト

某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や内容が変った場合はあしからず。

index.htmlは ここから。