so tired

仮想化、ハードウェアなどの技術メモ

SASでRDMを構成する

SASストレージをデータトストアとして使うIBM BladeCenterSで異なるESXiホスト上のVM同士でMSFC構成を作ったのでメモ。

環境

【ホスト】
 ・ESXiホスト1
  vmware ESXi4.1 update1
  vm1(Windows Server 2008 R2 Enterprise)をホスト
 ・ESXiホスト2
  vmware ESXi4.1 update1
  vm2(Windows Server 2008 R2 Enterprise)をホスト
【ストレージ】
 ・LUN1 …VM用データストア(ESXiホスト1,2にマッピング)
 ・LUN2 …クラスタ構成用のクォーラムディスク(VM1,2にマッピング)
 ・LUN3 …クラスタ構成用のデータ領域(VM1,2にマッピング)

SASストレージ上のLUNを仮想マシンにマッピングする方法

MSFCを構成するには仮想マシン上から直接LUNにアクセスする必要があるため、RawDeviceMappingを構成する。
SAS共有ストレージを使っている場合、GUI仮想マシンにRAWデバイスとしてボリュームを追加することはできないが、以下の方法で直接ESXiホストにマッピングファイルを作成することで、RDMを実現できる。

1.対象ESXiホストにSSHログインし、[/vmfs/devices/disks/]配下からマッピング対象のボリュームを探し、naa-ID(naa.から始まるボリューム識別名)をコピーする
2.以下コマンドを実行する。

vmkfstools -r <naa-ID> -a lsilogic <RDM_file_name>

… /vmfs/volumes/LUN1/対象仮想マシン(VM1,VM2)/マッピングファイル名(LUN2.vmdk、LUN3.vmdk等)

作成後、GUI上で[既存ディスクの追加]にて対象仮想マシンにマッピングファイルを追加する。

【参考】
Using Raw Device Mapping (RDM) with SAS attached storage

SAVのウィルス定義の日付取得バッチを作った

後輩がチームメンバーのPCのウィルス定義日付を確認して回るという
苦行をやらされていてかわいそうだったので日付取得バッチを作った。
以下の環境で正常動作を確認。
OS:WindowsXP Pro SP3
SAV:Symantec AntiVirus Corporate Edition 10.1.8.8000
DOMAIN/WORKGROUP:WORKGROUP

@echo off
rem 対象PCのコンピュータ名orIPアドレス(AAAAA)、用途(BBBBB)、ID(CCCCC)、パスワード(DDDDD)をgetVirusDATversionに渡す
call :getVirusDATversion AAAAA BBBBB CCCCC DDDDD
pause
goto :EOF

rem バージョン取得処理 %1=AAAAA、%2=BBBBB、%3=CCCCC、%4=DDDDD
:getVirusDATversion
ping %1 > nul 2> nul
if %ERRORLEVEL% NEQ 0 (
echo %2 に疎通できません
)
net use \\%1 /user:%1\%3 %4 > nul 2> nul
if %ERRORLEVEL% NEQ 0 (
echo %2 に接続できません
)
set VirusDATversion=
if exist "\\%1\c$\Program Files\Common Files\Symantec Shared\VirusDefs\definfo.dat" (
for /F "delims== tokens=2" %%i in (
'type "\\%1\c$\Program Files\Common Files\Symantec Shared\VirusDefs\definfo.dat"^|find "CurDefs="'
) do set VirusDATversion=%%i
)
if "%VirusDATversion%" NEQ "" (
set VirusDATversion=%VirusDATversion:~,4%/%VirusDATversion:~4,2%/%VirusDATversion:~6,2% %VirusDATversion:~9%
exit /b 0
) else (
set VirusDATversion=unknown
exit /b 1
)
echo %2のパターンファイルのバージョンは%VirusDATversion%です
net use \\%1 /d > nul

一応call行を増やせば複数台いけるけど、当然接続用のユーザーは考慮する必要有り。
ドメイン環境だったらnet useいらないと思う。

まあそもそも管理コンソール見れない環境でウィルス定義を取得したいという状況があまりないか・・。
ていうかまだSAV使っていることが稀かも・・。

(1/11追記)
エラー処理を追加。
あとやっぱりアカウント、パスワードは引数で渡すことに。

【参考】
Symantec AntiVirus のバージョンを取得するバッチ処理

BeautifulSoupを試してみた

年末年始はpythonの勉強をしよう!ということで、BeautifulSoupでスクレイピングを試してみた。

インストールの準備

まずはBeautifulSoupを利用する環境を整える。
BeautifulSoupのインストールにeasy_installコマンドを利用するためsetuptoolsをインストールする。
インストーラをダウンロードして、実行。

# wget http://peak.telecommunity.com/dist/ez_setup.py
# python ez_setup.py

自分の環境では"zlib not available"のエラーが出て一発ではうまくいかなかった。

Downloading http://cheeseshop.python.org/packages/2.5/s/setuptools/setuptools-0.6c6-py2.5.egg
Traceback (most recent call last):
  File "ez_setup.py", line 226, in <module>
    main(sys.argv[1:])
  File "ez_setup.py", line 160, in main
    from setuptools.command.easy_install import main
zipimport.ZipImportError: can't decompress data; zlib not available

この場合、zlib-develをインストールして、pythonをインストールし直す。
自分の環境はpython2.7だったのでついでに2.7.1に入れ直した。

# yum install zlib-devel
# wget http://www.python.org/ftp/python/2.7.1/Python-2.7.1.tgz
# tar zxvf Python-2.7.1.tgz
# cd Python-2.7.1
# ./configure CFLAGS=-fPIC ./configure --enable-shared 
# make
# make install

インストール

無事setuptoolsがインストールできたらいよいよBeautifulSoupをインストールする。

# easy_install BeautifulSoup

いざ実行

いろいろ試しながらテレビ番組表をスクレイピングするコードを書いてみた。
情報取得元はyahooテレビ番組表のトップページにした。
ぱっと見て取りやすそうだったので。
[test.py]

  1 #!/usr/bin/python
  2 #-*- encoding: utf-8 -*-
  3 
  4 import logging, sys, urllib
  5 import BeautifulSoup
  6 
  7 url = 'http://tv.yahoo.co.jp'
  8 soup = BeautifulSoup.BeautifulSoup(urllib.urlopen(url).read())
  9 
 10 for detailsrc in soup.findAll("span", {"class":"detail"}):
 11     text = ""
 12     for timesrc in detailsrc.find("span", {"class":"time"}):
 13         texttime = timesrc.string
 14         print "====="
 15         print str(texttime)
 16     for asrc in detailsrc.find("a"):
 17         texta = asrc.string
 18         if texta is None:
 19             break
 20         text = str(text) + str(texta)
 21     print text

実行結果

# python test.py
=====
24:00
ニュース・気象情報
=====
23:50
SCOOPER
=====
23:20
世間に飛び出せ!バナナ藩
=====
24:00
JNNニュース
=====
24:00
もしもドラフト会議
=====
24:00
その後
=====
24:05
SABU SESSION「投稿動画で北島三郎とセッション!?」
=====
24:10
なりきり完コピ選手権
=====
24:18
NNNニュース&amp;スポーツ
=====
24:20
『ぷっ』すま年末スペシャル
=====
24:43
ハッピーMusic
=====
24:50
SONGS選「松任谷由実」

一応取れたけどどの番組が何chか全然わかりませんな。
構造的にテレビ局名を取得するのが難しかったのです。

centOS上のvimでsyntax onできないのは仕様です

CentOSはデフォルトでは必要最小限の機能しかサポートしていない。
vim の拡張版を入れると syntax on もサポートされるとのこと。

# yum install vim-enhanced
# mv /bin/vi /bin/vim-tiny
# ln -s /usr/bin/vim /bin/vi

自分の.vimrcの書き方が悪いのかと思った

【参考】
http://www.ai.cs.kobe-u.ac.jp/~a.nakasuga/document/memo.html

Vyattaでよく使うコマンドのメモ

よく使うコマンドをまとめた。

1.基本コマンド

  • コンフィグモードへ移行
$ configure
  • オペレーションモードへ移行
# exit
# set interfaces ethernet eth0 address [xxx.xxx.xxx.xxx/xx]
  • ホスト名設定
# set system host-name [xxx]
  • NTP設定
# set system ntp server [xxx]
# set system gateway-address [xxx.xxx.xxx.xxx]
# set service ssh
  • 設定削除
#delete 〜
  • 設定適用
# commit
  • 設定保存
# save
  • スタティックルートの設定
# set protocols static route [xxx.xxx.xxx.xxx/xx] next-hop [yyy.yyy.yyy.yyy]

2.システム系

  • 再起動
$ reboot
  • システム停止
$ sudo shutdown -h now
  • 設定初期化
$ configure
# load /opt/vyatta/etc/config.boot.default
# set system login user vyatta authentication plaintext-password PASSWORD
# commit
# save
# exit
$ reboot

3.設定確認系

  • バージョンの確認
$ show version
  • 設定の確認
$ show configuration
  • インタフェースの確認
$ show interfaces
  • ルーティングを確認
$ show ip route

4.その他

  • PPPoE設定
# set interfaces ethernet eth0 pppoe 0
# set interfaces ethernet eth0 pppoe 0 user-id [xxx]
# set interfaces ethernet eth0 pppoe 0 password [xxx]
# set service dhcp-server shared-network-name [xxx] subnet [xxx.xxx.xxx.xxx/xx] start [yyy.yyy.yyy.yyy] stop [zzz.zzz.zzz.zzz]
# set service dhcp-server shared-network-name [xxx] subnet [xxx.xxx.xxx.xxx/xx] default-router [yyy.yyy.yyy.yyy]
# set service dhcp-server shared-network-name [xxx] subnet [xxx.xxx.xxx.xxx/xx] dns-server [yyy.yyy.yyy.yyy]
  • NATの設定
# set service nat rule [xxx] source address [xxx.xxx.xxx.xxx/xx]
# set service nat rule [xxx] outbound-interface eth0
# set service nat rule [xxx] type masquerade
(router1の設定)
# edit interfaces ethernet eth1
# set vrrp vrrp-group [xxx] virtual-address [xxx.xxx.xxx.xxx]
# set vrrp vrrp-group [xxx] priority [yyy]
(router2の設定)
# edit interfaces ethernet eth1
# set vrrp vrrp-group [xxx] virtual-address [xxx.xxx.xxx.xxx]
# set vrrp vrrp-group [xxx] priority [zzz]

参考にしたサイト