文字列⇔バイナリ変換
文字列→バイナリ
バイナリ→文字列
>>>chars = list(map(hex, map(ord, "hello"))) >>>chars ['0x68', '0x65', '0x6c', '0x6c', '0x6f'] >>>result = '' >>>for i in chars: ... result += chr(int(i, 16)) ... >>>result 'hello'
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>
作成後、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追記)
エラー処理を追加。
あとやっぱりアカウント、パスワードは引数で渡すことに。
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ニュース&スポーツ ===== 24:20 『ぷっ』すま年末スペシャル ===== 24:43 ハッピーMusic ===== 24:50 SONGS選「松任谷由実」
一応取れたけどどの番組が何chか全然わかりませんな。
構造的にテレビ局名を取得するのが難しかったのです。
まとめ
BeautifulSoup使うと簡単にスクレイピングできる。
でも情報を取得しやすいサイトを探すのが意外と大変。
【参考】
基礎からはじめるPython 第3回 スクレイピングにチャレンジ!
BeautifulSoupでスクレイピングのまとめ
『zipimport.ZipImportError: can't decompress data; zlib not available』の対処法
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
- IPアドレス設定
# 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]
- SSH有効化
# 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]
- DHCPの設定
# 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
- VRRPの設定
(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]
参考にしたサイト
日記を書く
日々の備忘録として日記を書くことにした。