Samba上のOfficeファイルが読み取り専用になる時の覚え書き

毎月某社に出す請求書ファイルを作ろうとファイルサーバー上にあるExcelファイルを開くと、なぜか「読み取り専用」になってしまいます。いつも別名保存してから元のファイル名で上書きしなおしてるのですが、今日はたまたま時間があったのでググってみました。

完全に解決したかどうかはしばらく様子をみないとわからないんですが、それらしき対処法を見つけたので覚え書きしておきます。

対処内容は、smb.confに、

dos filetimes = true

と設定するというものです。リンク先のmanによると、所有者以外でもタイムスタンプを更新できるようにするというもののようdす。上のBugzillaの議論で、Officeはファイルを開いた時点で最終アクセス時刻を更新しようとして、失敗すると読み取り専用警告を出す、とあり、パッチも提出されていますが、最後の方に上記設定だけで解決したという報告もあったのでとりあえず試してみます。

もともとこのフォルダにはマシンは違えどσ(^^)のアカウントでしかアクセスしてないはずなんで、そもそもおかしいんですけどね。ノートPCのオフラインフォルダ周りが影響してるのかな??

今のところ問題ないですが、また来月の請求書出す頃に再発しないかが焦点です。

外してたらごめんなさい。>参考にした人

ZABBIXでスイッチのポート別の瞬間負荷をモニタ

ウチのスイッチはSNMP対応なので、ZABBIXで監視可能ってことで設定してみたんですが、Template_SNMPv2_Deviceテンプレートから一括登録したアイテムだと累積のオクテット数しか取得できない模様。SNMPはMIBツリーというプロパティ一覧ツリーがあって、どの項目から値を取得するかを明示できる仕組みになっているので、他の項目をZABBIX上のアイテムとして登録してやればその値を監視できます。なので、TWSNMPというフリーのSMNPマネージャーでそれらしい値が採れる項目を探してみたんですが見つからず。

うーん、これじゃあまり役に立たないなぁ、と思いながらアイテム設定画面を眺めていたところ、「保存時の計算」という項目に「無し」、「差分/時間」、「差分」という選択肢があるのを発見。これを「差分」にしてやれば、前回取得時からの増加分をデータとして記録してくれそうなので、瞬間風速を採れるのではっ?

てことで適用してみたのが下のグラフ。TeraStationがつながっているポートを対象にし、PCから2GBのファイルをコピーし、その後で書き戻しをしてみたもの。赤が送信(ifOutOctets)、緑が受信(ifInOctets)。逆っぽいですがスイッチからみた送受信なのでこれでいいんでしょう。ちなみに取得周期が60秒なので、1分毎の瞬間風速ということになります。

zabbix_2

どうやら、これでポート別の稼働状況を視覚化できるっぽいです。一安心。まぁ、できたからってどうということもないんですが(^^;)。しいていえば、NASや無線LANアクセスポイントなどSNMPで監視ができないデバイスが不正使用されてないか(自分が寝てる時間に送受信量がハネあがったりしてないか)がチェックできるとかですかね。

サーバー監視ツール ZABBIX

zabbix今月のSoftware Design(2008/11号)でZABBIXというサーバー監視ツールが特集されていたので、導入してみました。

ZABBIXの主な特徴は、

  • RDBMSにログを蓄積し、Webインターフェイスでグラフ化などができる
  • HDD、メモリなどの利用状況や、デーモンのプロセス数などが監視可能。URL指定でWebページの稼働チェックも。
  • もちろんSNMPもOK
  • 特定状況(トリガ)に応じてメールを送信するなどのアクションを定義可能
  • クライアント(エージェントと呼ぶ)はマルチOS対応

など。

とりあえず自宅のメインサーバーと、実家にあるバックアップサーバー、そしてWindows系のサーバー2台にエージェントを導入し、会社のサーバーはURL指定で稼働チェックしてみるように設定しました。あとGbEハブもSNMPに対応してるので設定。

 

■設定覚え書き

記事の通りでは上手くいかないところがあったのでいくつか覚え書き。

記事にあるEPELリポジトリは追加せずとも、日本のユーザ会のサイトにCentOS用rpmがおいてあったので、そちらを利用しました。EPELだと現在1.4.6が入るんですが、記事中にもある日本語パッチが1.4.5用しかなかったので。

また初回に管理ページにログインしようとすると、ヘッダーがすでに出力されてるぜ系のエラーが出たんですが、/etc/zabbix/zabbix.conf.phpの中(最初はコメント文しか入っていない)を空にしてやったら治りました。同時に[ERROR: Unknown database type.]というエラーも出てたんですが、一緒に治っちゃったぽいです。

また、Windows版も「公式からソースをもってきて展開するとバイナリが入ってる」との記述だったんですが、単純に1.6をもってきたらUnable to add performance counter エラーで起動せず。1.4.6から抜き出したバイナリならOKでした。1.4.3あたりで治ったらしいバグなんですが、再発したんですかね。

遠隔のNAT下サーバーも適切にポートをあけてやったらちゃんとつながりました。会社で建ててるサーバーもできれば組み込みたいんですが、ポートあけられないので、SSHポートフォワーディングでなんとかできないかなぁと思案中。

Squirrel MailログインページをiPhone向けにカスタマイズ

iPhone OSのファームウェア2.1で、auの絵文字入りメールが全文文字化けするようになってしまいました。以前は絵文字部分だけが化けてたので内容は読み取れたのですが、今回は全文化けてしまうのでどうにもなりません。IMAPもMobileMeもダメです。

で、対策されるまでの一時しのぎで、文字化けメールが来た時はSafariからPHPベースのWebメールASPであるSquirrel Mailを使って読んでいるんですが、このログインページがデフォルトだと写真のように表示され、フォームの選択がやりづらい。ダブルタップでも拡大してくれず、ピンチで手動ズームする必要があります。

対策前

そこで、例によってmetaタグを追加して、iPhone/iPod touchで適当な倍率で表示されるようにしてみました。

なお使用中のバージョンは1.4.8です。

手を加えたのは、functions/page_header.phpです。30行目付近にページ先頭部分のHTMLが定義されているので、赤字部分を追加するだけです。PCでは解釈されず無視されるので影響はないはずです。

    echo ‘<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>’ .
         “\n\n” . html_tag( ‘html’ ,” , ”, ”, ” ) . “\n<head>\n” .
         “<meta name=\”viewport\” content=\”width=device-width, hight=device-height, initial-scale=0.8, \
user-scalable =yes\”>\n” .

         “<meta name=\”robots\” content=\”noindex,nofollow\”>\n”;

initial-scaleは0.8位だと縦画面でちょうど良い感じになりました。横画面メインの方は適宜調節してみて下さい。

対策後

こんな感じになりました。たかだかピンチ1回の手間ですが、省けるものは省いた方が気分が良いです(ピンチは片手持ちでできないので結構手間ですしね)。

iPhoneからAsteriskで発信するAsteriskC2D

AppStoreにAsteriskC2D[iTunesで開く]というアプリがあります。説明によるとiPhoneからAsteriskでダイヤルできるようなことが書いてあります。まさかSIPクライアント!と期待するワケですが、残念ながらダイヤルしてくれるだけ。実際の通話は別のSIP端末でする必要があります。

なにが便利かというと、iPhoneの電話帳に登録済みの番号へ固定電話(Asterisk)からかけたい、なんて時にiPhone上の番号を見ながら電話機のテンキーを叩かなくていい、って位ですね。\115とは言え、有料アプリ買ってまでしたいことかどうかは微妙です。

でも物好きなので試してみましたw。AppStoreの説明読んでも具体的にどう機能するのかさっぱりだし、探しても日本語の情報(どころか英語も)が見つからなかったので書いておきます。

■動作の仕組み

Asterisk(とWebサーバー)が動いているマシンに、専用のPerlスクリプトをインストールし、iPhoneからはhttpでそれを叩いているようです。Perlスクリプトは(必要ライブラリからして)Asteriskにtelnetして操作をしているようです。公式サイトによれば、元々はMac用のクライアントが主みたいですね。ブラウザ上で表示している番号などに簡単に発信するためのソフトのようです。ただし、iPhoneの場合は連絡先に登録した番号を呼び出せるだけ。まぁ、OSとしてコピペがない以上、どうしようもないんでしょうね。

■実際の操作手順

iPhoneにAsteriskC2Dアプリをインストールすると、設定画面にAsteriskC2Dという項目が追加されるので、そこから設定を済ませておきます。Extension欄に通話に使いたい電話機のSIP番号を指定します。UsernameとPasswordはLDAPを使う場合のもので、使わないのであれば、後述の設定をしておけば設定しなくて良いのかも知れません。

次にAsteriskC2Dアプリを立ち上げます。押せるのはContactsボタンのみ。押すと文字通り連絡先画面が開き、番号を選ぶと最初の画面に戻ってきます。

この状態で既に発信作業は行われており、間髪をおかずしてExtensionで指定した電話機が鳴ります。芸が細かいことに、発信者番号は発信先のものが表示されます。つまり、Aさんに発信した場合、あたかもAさんからかかってきたように見えるわけです。

電話を取ります。するとその時点で発呼がかかるようで、受話器からは呼び出し音が聞こえ、相手が出ると通話が開始できる、という流れです。

■サーバースクリプト導入のTips

サーバー側の設定は公式サイトに解説ページがあります。ただ少しいじる必要がありました。まずウチはLDAPを使っておらず、またCPANのライブラリもサクっとインストールできなかったので、LDAP関連の部分を無効化しました。

#use Net::LDAP;

設定部分直後の下記3行もコメントアウト 。

#my $ldap = Net::LDAP->new($LDAPServer, debug=>0) ||die "$@\n";
#my $ldapbind = $ldap->bind("uid=$in{‘username’},$LDAPSearch", password => $in{\’password’});
#if ($ldapbind->is_error()) {print "NO! username/password incorrect\n"; die "username/password incorrect: $in{‘username’} -> $in{‘password’}";}

また、番号の先頭に無駄に9を追加するので、 下記の行もコメントアウト。

#if ((substr($exten,0,1) ne ‘9’) && (length($exten) > 4) ) { $exten = ‘9’.$exten; }

あと、このスクリプト自体が勝手に呼ばれないよう、Apacheのアクセス制限で、LAN以外からはdenyするようにしておきます。同時にディレクトリ名やファイル名も適当に変えておくといいでしょう。

このスクリプトは以下のようなURIで簡単に電話がかけられるので、他にも応用が利くかも知れません。

AsteriskC2D.pl?deskphone=[使いたい電話機のSIP番号]&toCall=[発信したい電話番号]