2016年06月08日

Proxy環境からPythonのeasy_installを使う(Windows7)

久々ですが、またProxyネタ。
【環境】
Python2.7
Windows7

PythonがインストールされているWin7マシンにxlwtをインストールするため、easy_installのセットアップをします。

setuptoolsのページ(https://pypi.python.org/pypi/setuptools)から、上のほうにある「Installation Instructions」セクションに「ez_setup.py」というリンクがあるのでダウンロードして実行する。
C:\Python27>c:\Python27\python.exe ez_setup.py
Downloading https://pypi.io/packages/source/s/setuptools/setuptools-22.0.5.zip
Extracting in c:\users\xxxx\appdata\local\temp\tmpucuqth
Now working in c:\users\xxxx\appdata\local\temp\tmpucuqth\setuptools-22.0.5
Installing Setuptools
running install
…<略>…
Installed c:\python27\lib\site-packages\setuptools-22.0.5-py2.7.egg
Processing dependencies for setuptools==22.0.5
Finished processing dependencies for setuptools==22.0.5
※InternetからダウンロードするのでProxy接続できずに止まるかと思ったがすんなりいった。たまたまProxyのラウンドロビンの際に認証済みのマシンに当たったのか?

次にeasy_installを使ってxlwtをインストール。
C:\Python27>C:\Python27\scripts\easy_install xlwt
Searching for xlwt
Reading https://pypi.python.org/simple/xlwt/
Download error on https://pypi.python.org/simple/xlwt/: Tunnel connection failed:
407 Proxy Authentication Required -- S
ome packages may not be found!
Couldn't find index page for 'xlwt' (maybe misspelled?)
やはりProxyの認証エラーが発生。

例によってBurpProxy経由でアクセスさせます。BurpProxyについては以前書いたページ「Proxy環境からStrawberry PerlのCPANを使う」を参照ください。

コマンドプロンプトでプロキシをセットします。
C:\Python27>set HTTP_PROXY=http://localhost:8080/

C:\Python27>set HTTPS_PROXY=http://localhost:8080/
再度インストールコマンドを実行します。
C:\Python27>C:\Python27\scripts\easy_install xlwt
Searching for xlwt
Reading https://pypi.python.org/simple/xlwt/
Best match: xlwt 1.1.1
…<略>…
Installed c:\python27\lib\site-packages\xlwt-1.1.1-py2.7.egg
Processing dependencies for xlwt
Finished processing dependencies for xlwt

以上OK



タグ:Python
posted by まきすけ at 16:06 | Comment(0) | TrackBack(0) | Linuxとか

2014年12月09日

Windows7でPythonのurllib2が遅い

環境:Windows7 + Python2.7 + urllib2

XPで動かしていたPythonのhttp通信スクリプトをWindows7に移したところ、http通信のところで非常に遅くなった。
1回1回のアクセスに3秒くらい遅延が発生している。

調べてみると、Pythonの問題ではなくWindows7のIPv6の名前解決の問題らしい。

IPv4のネットワーク環境だが、IPv6で名前解決をしようとする

ネットワークがIPv4なので解決できない

IPv4で名前解決する

正確ではないけど、こんなイメージ。

これを解決するためにいろいろと試してみたが(netshコマンドでIPv4を優先にするとか)hostsファイルにサーバ名を記載したら一発で直った。

お試しあれ。


タグ:Python
posted by まきすけ at 14:46 | Comment(0) | TrackBack(0) | Linuxとか

2014年12月04日

Oracle Linux7 (CentOS7) でのSwap領域拡張

環境:Oracle Linux 7(CentOS7) Oracle12c
LinuxはOSX+VMware Fusion上で稼働。

Oracle Linux7 (CentOS7)でのswap領域拡張方法です。
RHEL6のマニュアルの通りでいけました。

まずはOSをシャットダウンして、VMware上でディスクを1G増やします。

次にGPartedを使って追加した領域から新パーティション作成します。
2014-12-04 01.59.04.png

対象領域を右クリックして、領域を作成。LVM2を選択します。
2014-12-04 02.25.01.png

/dev/sda4が作成されました。
2014-12-04 02.25.29.png

シャットダウン→GParted起動ディスクをアンマウントして起動します。

ログインして現在のSWAPサイズを確認
[root@oraclelinux7 ~]# free
total used free shared buffers cached
Mem: 1773416 619460 1153956 9252 916 292568
-/+ buffers/cache: 325976 1447440
Swap: 2097148 0 2097148
ボリュームグループを表示
[root@oraclelinux7 ~]# vgdisplay -C
VG #PV #LV #SN Attr VSize VFree
ol 2 2 0 wz--n- 31.50g 0
VGに/dev/sda4を追加
[root@oraclelinux7 ~]# vgextend ol /dev/sda4
Volume group "ol" successfully extended
追加した後のVGを確認
[root@oraclelinux7 ~]# vgdisplay -C
VG #PV #LV #SN Attr VSize VFree
ol 3 2 0 wz--n- 32.50g 1020.00m
VFreeが増えています。
SWAP領域のLVを表示
[root@oraclelinux7 ~]# lvdisplay
--- Logical volume ---
LV Path /dev/ol/swap
LV Name swap
VG Name ol
LV UUID UawrY4-0QCv-9vIt-3Kvm-aXeM-nEN5-Egr7sf
LV Write Access read/write
LV Creation host, time localhost, 2014-11-29 04:50:45 +0900
LV Status available
# open 2
LV Size 2.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 252:0
LVは /dev/ol/swap

SWAPで使っている論理ボリューム(LV)を拡張します
[root@oraclelinux7 ~]# lvextend -l +100%FREE /dev/ol/swap
Extending logical volume swap to 3.00 GiB
Logical volume swap successfully resized
swapを無効にします。
[root@oraclelinux7 ~]# swapoff -v /dev/ol/swap
swapoff /dev/ol/swap
SWAP領域を作成
[root@oraclelinux7 ~]# mkswap /dev/ol/swap
mkswap: /dev/ol/swap: warning: wiping old swap signature.
スワップ空間バージョン1を設定します、サイズ = 3141628 KiB
ラベルはありません, UUID=7d7cfb2b-2d1f-4c3f-ae44-812a89dbaee0
SWAPを有効化
[root@oraclelinux7 ~]# swapon -v /dev/ol/swap
swapon /dev/ol/swap
swapon: /dev/mapper/ol-swap: found swap signature: version 1, page-size 4, 同じ byte order
swapon: /dev/mapper/ol-swap: pagesize=4096, swapsize=3217031168, devsize=3217031168
freeコマンドでswapサイズを確認
[root@oraclelinux7 ~]# free
total used free shared buffers cached
Mem: 1773416 590924 1182492 9256 944 271016
-/+ buffers/cache: 318964 1454452
Swap: 3141628 0 3141628


posted by まきすけ at 02:19 | Comment(0) | TrackBack(0) | Linuxとか

Oracle LinuxにOracle12cをインストールする その2(SWAPが足りない!)

環境:Oracle Linux 7(CentOS7) Oracle12c
LinuxはOSX+VMware Fusion上で稼働。

さてインストールの続き。
インストーラを起動してからは、サクサクいく…のか?

以下スクリーンショットが続きます。


続きを読む
posted by まきすけ at 02:17 | Comment(0) | TrackBack(0) | Linuxとか

2014年12月03日

CentOS7(Oracle Linux7)でのLVMパーティション拡張

環境:Oracle Linux7(CentOS7) 、Mac OSX10.8.5 + VMware Fusion7

さてOracle Linux7にOracleをインストールしようかと思ったらパーティションがデフォルトで20Gしかなくて容量不足とのメッセージ。VMwareのディスクを追加して、LVMを拡張しようとしたらドハマリしたのでLinuxパーティション拡張のメモ。

おおまかな手順
1.OSシャットダウン
2.スナップショットを取っていたら削除する。
3.必要に応じてディスクイメージをバックアップ
4.VMwareでディスクを追加する。
5.GPartedのディスクイメージで起動するので、起動シーケンスを変更するためVMwareでBIOS表示できるよう設定する。
6.GPartedで領域編集
7.Linux上でパーティションを作成、追加。

ハマったのは6,7です。

続きを読む
posted by まきすけ at 23:20 | Comment(1) | TrackBack(0) | Linuxとか

Oracle LinuxにOracle12cをインストールする(インストーラ起動まで)

環境:Oracle Linux 7(CentOS7) Oracle12c
LinuxはOSX+VMware Fusion上で稼働。

Oracleの資格もバージョンによる期限切れが適用されるようになるということで、10gGOLDから移行するために12cのお勉強をすることにしました。
それにしても黒本高いよ…。

実地もしなきゃねということで、OSX+VMware Fusion上にOracle Linux7をインストールして環境構築です。
手順は「Oracle Database 12c Release1(12.1.0.2)単一インスタンス・データベース インストレーション・ガイド Linux x86-64版」(ドキュメントはここ)のPDFを元に進めています。

順を追って、問題のあった箇所だけ補足します。

3 インストール環境と事前準備
3.1 ハードウェア要件とメモリーの確認…OSデフォルトインストールで問題なし
3.2 ソフトウェア要件の確認…OSデフォルトインストールで問題なし
3.3 OSグループ、ユーザー、およびディレクトリの作成
ユーザー作成のコマンドの記載が間違っていました。ホームディレクトリ指定のオプションは「-h」ではなく「-d」になります。
# useradd --u 1200 -g oinstall -G dba,oper,backupdba,dgdba,kmdba -d /home/oracle oracle
オラクルをインストールする/u01以下はoracle:oinstallの所有権としておいたほうがいいです。
# chown -R oracle:oinstall /u01

3.4 環境変数とリソース制限の設定
rootユーザーになり、/etc/security/limits.conf の末尾に下記の記載を追加。
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack
追加したら、oracleユーザーにsuして数値を確認する。
[oracle@oraclelinux7 ~]$ ulimit -Su
2047
[oracle@oraclelinux7 ~]$ ulimit -Hu
16384
[oracle@oraclelinux7 ~]$ ulimit -Ss
10240
[oracle@oraclelinux7 ~]$ ulimit -Hs
32768
[oracle@oraclelinux7 ~]$ ulimit -Sn
1024
[oracle@oraclelinux7 ~]$ ulimit -Hn
65536

4 インストール
4.1 Oracle Databaseのインストール
もはやお約束なのか、oinstallerを起動すると文字化け。
JREを指定してあげないといけないらしい。

JREの場所を検索
[oracle@oraclelinux7 database]$ find /usr -name jre
/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.1.0.1.el7_0.x86_64/jre
/usr/lib/jvm/jre
/usr/lib/jvm-exports/jre
find: ‘/usr/lib/firewalld’: 許可がありません
find: ‘/usr/share/polkit-1/rules.d’: 許可がありません
find: ‘/usr/libexec/initscripts/legacy-actions/auditd’: 許可がありません
[oracle@oraclelinux7 database]$
なんとなく場所がわかったので、指定して起動してみる。
[oracle@oraclelinux7 database]$ ./runInstaller -jreLoc /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.1.0.1.el7_0.x86_64/jre
これで問題なくOKでした。
英語でよければ
$ export LANG=C
を実行してruninstallerを起動すればOKです。

まだまだ続くよ!

その2へ



タグ:Oracle
posted by まきすけ at 06:31 | Comment(0) | TrackBack(0) | Linuxとか

2014年07月03日

Proxy環境からStrawberry PerlのCPANを使う

環境:Windows7 + Strawberry Perl + Proxy環境(ドメイン認証)

社内LANで外部接続にProxyを使っているPCにStrawberry Perlをインストールしたものの、CPANを使おうとしてエラーが発生したので対処をメモ。

発生したエラー
error: "Undefined subroutine 
CPAN::HTTP::Credentials::_clear_non_proxy_credentials called

ググってもぜんぜん出てこない…。
cpanのコマンドでhttp_proxyとユーザー・パスワードを設定するも同様のエラーが出てしまった。

Proxyがドメイン認証ということが原因なのかどうなのか…情シスに聞くのもややこしい。
追加モジュールを別途ダウンロードしてインストールするという手順もあったが、そもそも追加モジュールを探すのが面倒くさいので、ProxyとクライアントPCの間にさらにProxy(BurpSuite)を挟んで対応することに。

接続のイメージとしてはこんな感じ
CPAN(http://ftp.riken.jp/) <==> 社内Proxy <==> Burp Proxy(PC) <==> CPANクライアント(PC)

まずProxyとしてBurpSuite(無料版)をダウンロードします。
http://www.portswigger.net/index.html

ダウンロードして起動したら、Optionsのタブを選択し「Upstream Proxy Servers」の「Add」ボタンを押します。
burp01.png


次にBurp Proxyの上位に来るプロキシの設定画面になりますので、情報を入力します。

 Destination Host: * (*はワイルドカードなので、全てのホストが対象になります)
 Proxy Host: 社内LANのプロキシサーバを指定
 Proxy Port: 社内LANのプロキシサーバのポートを指定
 Authentication Type: ドメイン認証の場合、NTLMのv1かv2を選択(v2でいけた)
 Username/Password: 自分のドメイン認証のIDとパスワード
 Domain: ドメイン名を指定
 Hostname: よくわからなかったので空白にした
burp02.png


最後に、Proxyタブから「Intercept is Off」になるようにします。
これが「Intercepts is On」のままだと、プロキシにアクセスするたびに「Forward」を押さないと進まないので面倒です。
burp03.png

以上でBurpSuiteの設定は完了。


次にCPANの設定になります。

コマンドプロンプトからCPANを起動し、o confコマンドでプロキシを設定します。
C:\> o conf http_proxy http://127.0.0.1:8080/
proxy_user、proxy_passが設定されていたら下記を参考に消してください。
C:\> o conf http_user ""


これでCPANコマンドを実行すれば、ローカルPCのプロキシを経由して社内Proxy→インターネットと接続できる…はず。

うまくいかない場合は、webブラウザの設定でProxyをlocalhostにしてインターネット接続できるかどうか確認しましょう。ブラウザからインターネット接続できない場合は、BurpSuiteの設定に問題があります。
ブラウザからインターネット接続できた場合は、cpanの設定に問題があります。

まっとうな解決策じゃないけど、長く悩むよりベターかと。

《補足》
うちの環境だけかもしれないけど、一度ブラウザを使ってBurpSuite経由でアクセスしないと、CPANでの認証が通らなかった。Proxy側にセッション情報が残っていないとダメなのか?

タグ:Perl CPAN
posted by まきすけ at 20:12 | Comment(0) | TrackBack(0) | Linuxとか

2014年01月11日

vmware ESXiサーバの構築

MCJ(マウスコンピュータ)のPCの余剰を使ってVMサーバを構築。

ESXi5.5をインストールしようとしたころ、NICのドライバが無いためインストールがストップ。
Realtekだと認識しないらしい(IntelならOK)

調べたところ、5.1をインストールして5.5へアップグレードすればインストールできるようだ。
参考1:チープなRealtekでESXi 5.5を使う方法

んなワケで5.1をダウンロードしてインストール。あっさり終わる。

アップグレードのためにはSSHで接続するのだが…蹴られる。
いったんコンソールからログインして、SSHを有効にし、公開鍵方式を無効にした。
参考2:VMware ESXi 5.0にsshで接続

SSHでログインできたら、参考1のサイトのやり方でアップグレード。


次に仮想化するWinXPにVMware vCenter Converterをインストールし、ESXi上にバックアップしようとしたところ、Sysprepファイルが無いとWARNINGが出た。
参考3:DELLのVostroのハードコピー&仮想化にはまった

OSのインストールCDもしくは下記URLからdeploy.cabを入手。
http://www.microsoft.com/en-us/download/details.aspx?id=11282

ファイルを展開して指定のフォルダへ配置。

C:\Documents and Settings\All Users\Application Data\VMware\VMware vCenter Converter Standalone\sysprep\xp\

大まかな手順は下記を参考に。
参考4:
【VMware】VMware vCenter ConverterでP2Vしてみた


もう細かく書くのがめんどくなってきたよ…。
posted by まきすけ at 16:30 | Comment(0) | TrackBack(0) | Linuxとか

2013年11月15日

Tomcatの古いログを削除するスクリプト

CentOS5.5

Tomcatの古いログ(host-manager.YYYYMMDD.logとか)が溜まるので、じどうで圧縮、削除するスクリプト。
かなり適当です…。

#!/bin/sh

export LANG=C

find /usr/local/tomcat/logs -ctime +5 -name "*.log" -print0 | xargs -r -0 gzip -f
find /usr/local/tomcat/logs -mtime +181 -name "*.gz" -print0 | xargs -r -0 rm -f
find /usr/local/tomcat/logs -mtime +181 -name "*.log" -print0 | xargs -r -0 rm -f


参考サイト
Unix :: コマンド / xargs


タグ:SHELL
posted by まきすけ at 21:38 | Comment(0) | TrackBack(0) | Linuxとか

2012年10月01日

Python de Excel

■ 環境
Windows XP + Python2.7 + xlwt

■ 参考リンク
Python Excel(xlrt,xlwt,xlutilsのサイト)
Enajet Python: EXCELファイル読み書き
Python-izm Excel書き込み (xlwt)

詳細はまた後で書きたいと思いますが、PythonでExcelを生成するためのパッケージxlwtを使った際の困ったこと。

● 印刷時にヘッダーとフッターを非表示にできない
worksheetに print_headers というプロパティーがあるのだが、これはいわゆるヘッダー・フッターのことではなくてシートの行列番号(A,B,Cとか)を印字するかどうかのオプションでした。

ヘッダー・フッターは空白をセットするしかないみたい?
from xlwt import *
wb = Workbook()
ws = wb.add_sheet("sample_sheet")
ws.header_str = u"ヘッダー"
ws.footer_str = u"フッター"
wb.save("sample_book.xls")


● 行の高さの指定がうまくいかない
ワークシートの行の高さを指定してもさっぱり高さが変わらないので何でかなーと思っていたら、height_mismatch に 1 をセットしないとダメらしい。
デフォルトだとheight_mismatchが0で、フォントサイズにあわせて自動で行の高さが変わる模様。
ws0.row(0).height_mismatch = 1
ws0.row(0).height = 300


● 後からセルのスタイルを変更できない?
一度セルへ値をセットした後にセルの書式(網掛けとか)を変更しようと思ったがそれらしき設定が見当たらず。

● 複数のセルをまとめて変更できない?
複数のセルをまとめて書式変更したりしたいとき、それらしきコマンドが無い。

● セルのスタイルを条件ごとに変更する
例えば日曜日のセルはピンクにしたい、とかいうときはif文を使ってスタイルの切替をするわけだが、スタイルを変数として格納する際には、格納用の変数を先に宣言しておかないとダメだった。
styleX = XFStyle() # スタイル格納用変数を宣言
# スタイルを設定
style1 = easyxf(
'font: name Arial;'
)
styleSun = easyxf(
'font: name Arial;'
'pattern:pattern solid, fore_colour rose;'
)
# 変数 youbi が"日"だった場合はピンク網掛けのスタイルを使う
if youbi == u"日":
styleX = styleSun
else:
styleX = style1
# 実際にセルへ書き込む
ws0.write(0, 0, youbi, style)
※上記ソースはあくまでサンプルなのでそのままでは動きません



タグ:Python EXCEL
posted by まきすけ at 17:40 | Comment(0) | TrackBack(0) | Linuxとか

Pythonのeasy_installを試す

■ 環境
WindowsXP + python2.7

最近Pythonをがんばろうかなぁと思いつつ全然できていないのですが、ちょっといじくる機会があったのでメモ。
PerlにおけるCPAN、PHPにおけるPEARのように、pythonにはeasy_installなるものがあるらしい。

下記URLからsetuptoolsのexeをダウンロードしてインストールするとOK
http://pypi.python.org/pypi/setuptools

ファイル名中の「py2.x」がPythonのバージョンと合うものをダウンロードする模様。
setuptools-X.XcXX.win32-py2.X.exe

コマンドラインから必要なパッケージをインストールするには以下のようにする。
C:\> easy_install [パッケージ名]


Linux版だとeasy_installのセットアップは下記スクリプトを叩けばOKということだがWin版の方法がすぐ見つからなかったのでメモです。
http://peak.telecommunity.com/dist/ez_setup.py


タグ:Python
posted by まきすけ at 17:08 | Comment(0) | TrackBack(0) | Linuxとか

2012年09月28日

ORA-12154 TNS:指定された接続識別子を解決できませんでした

【環境】
サーバ:Oracle Database Server 11g Standard Edition One(11.2.0.3)
クライアント:Windows XP + Oracle Client 10g/9i

【事象】
コマンドプロンプトからSQL/Plusを起動してOracleへ接続しようとすると、以下のエラーメッセージが表示される。ただし、他のユーザー(SYSなど)で同じサーバへ接続すると正常にログインできる。
C:>sqlplus "username"/"Passw@rd!"@TNSNAME

SQL*Plus: Release 10.2.0.3.0 - Production on 木 9月 28 19:05:59 2012

Copyright (c) 1982, 2006, Oracle. All Rights Reserved.

ERROR:
ORA-12154: TNS: 指定された接続識別子を解決できませんでした


【解決方法】
tnsnames.oraの記載が間違っているとか、TNS_ADMIN 環境変数にtnsnames.oraのディレクトリを指定するとかで直るという情報が多いのですが、今回は別のユーザーで接続すると正常にログインできるので非常に悩みました。

結論としてはパスワードに「@」や「%」を使うとエラーになるということでした(笑

11gのクライアントならOKなのかな…?

ちなみに11gからはパスワードの大文字小文字を区別するようになりました。
Object Browserのバージョンが古いやつで接続しようとしたら接続できなくて困ってしまった。結局SQL Developerを使っています。

10gまでと同様にパスワードの大文字小文字の区別をしないようにするにはALTER SYSTEM文で設定を変更します。
ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE;


タグ:Oracle
posted by まきすけ at 19:10 | Comment(0) | TrackBack(0) | Linuxとか

2012年08月21日

perlでInternal Server Error 500が発生した場合の対処

【環境】OS:Linux系、Perl

最近また問い合わせがちょこちょこ来るのでメモ。

■ 原因1:改行コードが間違っている
Linux系の場合、行末の改行コードは「LF」にしなければならない。
しかし行末の改行コードが「CR+LF」になっているとエラーとなる。

なぜ「CR+LF」になってしまうのか?
Windowsの標準的なエディタで編集すると改行コードは「CR+LF」となる。そのままアップロードするとエラーとなる。

対応策としては、
A) 改行コードを変更できるエディタで編集し、FTPはバイナリモードでアップロードする。
B) エディタはそのまま編集し(CR+LF)、FTPソフトで変換してアップロードする。
C) サーバ上で変換する(ssh/telnetが出来る場合のみ可)

オススメはAです。なぜかというとFTPのソフトによって変な動きもあるから。

■ 原因2:先頭行のperlへのパスが間違っている
先頭行に「#!/usr/bin/perl」などと書いてあると思いますが、これはperlプログラムへのパスになりますのでサーバの環境によって変えなければきちんと動きません。
ssh/telnet可能な人はコマンドラインから
$ which perl
と実行するとperlへのパスが表示されるので正しく記載しましょう。
だいたいは「#!/usr/bin/perl」「#!/usr/local/bin/perl」のいずれかって感じですが。

■ 原因3:パーミッションが間違っている
cgiファイルのパーミッションは「755」です。
FTPソフトでパーミッションの確認・変更ができます。

■ 原因4:プログラムの文字コード
Perlのプログラムはまだ多くがEUCだったりしますので、文字コードがSJISやUTF8だと動かない場合があります。

やっぱりいちばん多いのは改行コードの間違いです。
「何も変えてないのに動かなくなった!」と言われた場合はこれが多いです。

サーバへSSH/Telnet接続出来る場合は「od」コマンドで改行コードを確認できます。
odコマンドはテキストファイルをダンプ出力するコマンドです。
# od -tcx test.cgi | more
0000000 # ! / u s r / b i n / p e r l \r
752f2123 622f7273 702f6e69 0d6c7265
0000020 \n \r \n $ e r r o r _ f l a g =
240a0d0a 6f727265 6c665f72 3d206761
一行目の末尾とニ行目の先頭に「\r」「\n」という文字が見えると思います。\rはCR、\nはLFのことです。ですので、このファイルの改行コードは「CR+LF」であることがわかります。

で、このファイルの改行コードをサーバ上で変換したい場合は以下のようにします。
$ perl -pe 's/¥n/¥r¥n/' < 元ファイル名 > 出力ファイル名


SSH/Telnet接続が可能であれば、サーバ上で正しく実行できるかどうかをチェックしたほうがいいです(実行するとDBを更新したりメールを送ったりする場合は注意)
posted by まきすけ at 16:52 | Comment(0) | TrackBack(0) | Linuxとか

2012年06月15日

Oracle SEでログオントリガを使ってログイン履歴を取得する

環境:Oracle Standard Edition 10.2.0.x

Oracleの監査機能(Audit_trail)を使ってデータベースへのログイン履歴を残すことができるが、audit_trail=db としてデータベースに履歴を残す場合はsystem表領域が膨らんでしまいメンテナンス性がよろしくなく、audit_trail=os(またはxml) とした場合はテキストベースとなってしまい検索が非常に面倒である。
audit_trail=dbとして、履歴が格納されるテーブルをsystem表領域以外にできれば問題解決であるが(実際には可能)いろいろと面倒だしsystem表領域をイジくるのは嫌な感じである。

そこでオラクルの「データベーストリガ」の「AFTER LOGON」を利用してログイン履歴を取得する方法をご紹介する。

注意点として、履歴を残すテーブルの表領域がいっぱいになったりすると誰もログインができなくなってしまうという「諸刃の剣」であることを認識頂きたい。

ログ格納用のテーブルを作る。スキーマは管理専用のスキーマとしたほうがいい。
CREATE TABLE HOGEHOGE.SESSION_AUDIT
(
LOG_DATE TIMESTAMP(6) DEFAULT SYSTIMESTAMP,
EVENT_NAME VARCHAR2(32),
LOGON_USER VARCHAR2(32),
TERMINAL VARCHAR2(32) DEFAULT USERENV('TERMINAL'),
SESSION_USER VARCHAR2(32) DEFAULT SYS_CONTEXT('USERENV','SESSION_USER'),
OS_USER VARCHAR2(64) DEFAULT SYS_CONTEXT('USERENV','OS_USER'),
HOST VARCHAR2(256) DEFAULT SYS_CONTEXT('USERENV','HOST'),
IP VARCHAR2(32) DEFAULT SYS_CONTEXT('USERENV','IP_ADDRESS'),
SESSION_ID VARCHAR2(256) DEFAULT SYS_CONTEXT('USERENV','SESSIONID'),
SID VARCHAR2(256),
SERIAL# VARCHAR2(256),
OBJECT_TYPE VARCHAR2(256),
OBJECT_NAME VARCHAR2(256),
YMD VARCHAR2(8) DEFAULT TO_CHAR(SYSDATE,'YYYYMMDD'),
HH24 VARCHAR2(2) DEFAULT TO_CHAR(SYSDATE,'HH24')
)
PCTFREE 10
MAXTRANS 255
TABLESPACE TABLESPACE_XXXX
STORAGE(INITIAL 100M MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
NOCACHE
LOGGING
/


次にトリガーを作成する。
CREATE OR REPLACE TRIGGER LOGON_AUDIT
AFTER LOGON
ON DATABASE
DECLARE
V_SID VARCHAR2(255);
V_SERIAL# VARCHAR2(255);
BEGIN
IF USER NOT IN ('SYSMAN','DBSNMP') THEN
SELECT SID, SERIAL# INTO V_SID,V_SERIAL# FROM v$SESSION
WHERE
AUDSID = SYS_CONTEXT('USERENV','SESSIONID')
AND SID = (SELECT DISTINCT SID FROM v$MYSTAT)
;
INSERT INTO HOGEHOGE.SESSION_AUDIT(EVENT_NAME, LOGON_USER,SID,SERIAL#)
VALUES (ORA_SYSEVENT, USER,V_SID,V_SERIAL#);
COMMIT;
END IF;
END;


SYSMANとDBSNMPのログも取得すると、かなりの数のログが出てしまうので上記トリガーでは省いている。
SYSMANとDBSNMPを使ってログインし悪用する者がいる可能性もあるので、心配な人は全部取得するようにしたほうがいいかも。
ログオフの情報も取得できるのだが、時間切れ(セッションタイムアウト)の場合はうまく取得できないようだし、1分程度でログイン・ログオフを繰り返すような場合もログオフの記録が漏れたりすることがあったのであまり信憑性がないかもしれない。

タグ:Oracle
posted by まきすけ at 19:36 | Comment(0) | TrackBack(0) | Linuxとか

2012年04月18日

mysqlで ERROR 1146 (42S02): Table 'mysql.servers' doesn't exist と Access denied for user 'root'@'localhost'

【環境】
mysql 5.5.22 MySQL Community Server (GPL) by Remi
CentOS 5.5

【状況】
mysqlでflush privilegesを実行しようとすると、以下のエラーメッセージが表示される。
mysql> flush privileges;
ERROR 1146 (42S02): Table 'mysql.servers' doesn't exist

参考サイト:Go for it! mysql.serversテーブル
以下のSQLを実行し、DB:mysqlにテーブルを作成すればOK。
> use mysql
Database changed

> CREATE TABLE `servers` (
`Server_name` char(64) NOT NULL,
`Host` char(64) NOT NULL,
`Db` char(64) NOT NULL,
`Username` char(64) NOT NULL,
`Password` char(64) NOT NULL,
`Port` int(4) DEFAULT NULL,
`Socket` char(64) DEFAULT NULL,
`Wrapper` char(64) NOT NULL,
`Owner` char(64) NOT NULL,
PRIMARY KEY (`Server_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='MySQL Foreign Servers table';

次に、ユーザー作成&権限付与をしようとしたらエラー発生。
mysql> grant all privileges on *.* to hogehoge@localhost;
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

ちなみに、rootにパスワードを設定して using password: YES としても同じエラーになる。

参考サイト:MySQLでの「Access denied for user ‘root’@'localhost’ (using password: NO) 」への対処

かなり参考サイトまんまコピペになってしまい申し訳ありません。

1.MySQLの停止
[root ~]# service mysqld stop

2.オプション付きで起動
MySQLを skip-grant-tablesオプション付きで起動
このオプションはMySQLの権限システムを使用しないで起動するためのもの
[root ~]# mysqld_safe --skip-grant-tables &

3.mysqlコマンドプロンプトに入る
[root ~]# mysql -u root
mysql>

4.rootへの権限設定
まずは、現状の権限設定を確認してみます。
mysql> use mysql;
Database changed
mysql> select User,Password,Host from user;
+-----------+-------------------------------------------+---------------+
| User | Password | Host |
+-----------+-------------------------------------------+---------------+
| root | *0ED3F3036636C1EBCDC403F2798C4F13A0A41126 | localhost |
| root | | centos-test01 |
| root | | 127.0.0.1 |
| | | localhost |
| | | centos-test01 |
| hogehoge | *0ED3F3036636C1EBCDC403F2798C4F13A0A41126 | localhost |
+-----------+-------------------------------------------+---------------+
6 rows in set (0.00 sec)

参考サイトではこのテーブルが「空」の前提でしたが、私の場合はroot@localhostなどが登録されていました。
参考サイト手順の通り、userテーブルを全件削除してから、設定を実行します。
mysql> truncate table user;
mysql> flush privileges;
mysql> grant all privileges on *.* to root@localhost identified by 'パスワード' with grant option;
mysql> flush privileges;

実行結果を確認します。
mysql> select User,Password,Host from user;
+------+-------------------------------------------+-----------+
| User | Password | Host |
+------+-------------------------------------------+-----------+
| root | *0ED3F3036636C1EBCDC403F2798C4F13A0A41126 | localhost |
+------+-------------------------------------------+-----------+
1 row in set (0.00 sec)

5.MySQLの再起動(通常起動)
これでrootユーザへの権限設定ができましたので、MySQLを通常起動します。
mysql> quit;
[root ~]# kill -KILL [mysqld_safe のPID]
[root ~]# kill -KILL [mysqld のPID]
[root ~]# service mysqld start
mysqld を起動中: [ OK ]

6. 再度ユーザー作成
mysql> grant all privileges on *.* to hogehoge@localhost identified by 'hogehoge';
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
またエラーが出る。

mysql> grant all on *.* to hogehoge@localhost identified by 'hogehoge';
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
「grant all privileges」を「grant all」にしてみたがダメ。

mysql> grant all on hogehogedb.* to hogehoge@localhost identified by 'hogehoge';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
*.* を [db名].* に変更したらいけた。

mysqlはremiで入れないようがよさげか…?php5.3をremiで入れたらいっしょに入っちゃったのよね…。
先にmysql5.5をインストールしておいたほうがよかったかな?
posted by まきすけ at 20:59 | Comment(1) | TrackBack(0) | Linuxとか

2012年04月01日

Mac de python

Pythonやってみっか、ということで。

Mac OSX に Djangoをインストールする

Mac OSX 10.7.3
python 2.7.1
Django 1.4

$ sudo python setup.py install
インストール先は /Library/Python/2.7/site-packages/django/ だった。

Djangoが正常にインストールされたかテストする。
$ python
>>> import django
>>> django.VERSION
(1, 4, 0, 'final', 0)

プロジェクトを作って動作テスト
Python入門-Django プロジェクトの作成

プロジェクトを作成したいディレクトリ(/Users/[user]/Documents/python/など)へ移動してプロジェクトを作成するコマンドを実行。
> python /Library/Python/2.7/site-packages/django/bin/django-admin.py startproject mysite

/Users/[user]/Documents/python/mysite/というディレクトリができ、ファイルとディレクトリが生成される。
-rwxr-xr-x 1 username staff 249 4 1 18:19 manage.py
drwxr-xr-x 10 username staff 340 4 1 18:20 mysite

mysiteディレクトリ内にsettings.pyなどのファイルがある。
-rw-r--r-- 1 username staff 0 4 1 18:19 __init__.py
-rw-r--r-- 1 username staff 5338 4 1 18:19 settings.py
-rw-r--r-- 1 username staff 556 4 1 18:19 urls.py
-rw-r--r-- 1 username staff 1134 4 1 18:19 wsgi.py

次に開発サーバを起動
$ python manage.py runserver
Validating models...

0 errors found
Django version 1.4, using settings 'mysite.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

ブラウザで http://localhost:8000/ へアクセスして下記画面が出れば成功。

ctrl-c でサーバを停止できる。

開発サーバを起動すると、プロジェクトのディレクトリに「.pyc」という拡張子のファイルができあがる。これらはpythonがスクリプトをコンパイルしたバイナリファイルなので、削除してしまっても問題ない。
posted by まきすけ at 18:10 | Comment(0) | TrackBack(0) | Linuxとか

2011年11月30日

シェルスクリプトが存在するディレクトリを調べる

シェルスクリプトが存在するディレクトリを調べるには、下記コマンドを使う。
/usr/bin/dirname $0


シェルにシェルスクリプトのあるディレクトリへ移動するよう書く場合はこうなる。
#!/bin/sh

## ワークディレクトリを /usr/local/somedir/bin にする
cd `/usr/bin/dirname $0`

..... (メインロジック)
参考サイトまんまですが!

■ 参考サイト
http://www.slogical.co.jp/tech/unixcommand_dirname.html

タグ:Linux SHELL
posted by まきすけ at 22:29 | Comment(0) | TrackBack(0) | Linuxとか

2011年11月24日

mysqlのバイナリダウンロード

mysqlのバイナリを落とそうと思ったら落とし先がわかりづらかったのでメモ

http://download.softagency.net/mysql/Downloads/MySQL-5.5/


古いのはこっちから
http://download.softagency.net/mysql/Downloads/

タグ:MySQL
posted by まきすけ at 21:06 | Comment(0) | TrackBack(0) | Linuxとか

2011年08月10日

Windows7関連のメモ

■ 環境
Mac OSX Lion
Pararells Desktop 6
Windows7 Home Premium

リモートデスクトップとDesktop VPNが使えればよかったので Home Premiumにしたけど、ちょっとめんどい。


■Windows7 Home Premiumで自動ログインを禁止

スタートメニューにある”ファイル名を指定して実行”から
control userpasswords2 を検索

参考サイト:Windows7に自動ログオン:いつもどこかで鳩の声

スタートメニューにある”ファイル名を指定して実行”を表示するには、スタートメニューを開いてどこかを右クリック>プロパティ>カスタマイズ>[ファイル名を指定死て実行]コマンド にチェックをつける。
posted by まきすけ at 15:30 | Comment(0) | TrackBack(0) | Linuxとか

2011年08月04日

OSX Lionのログイン画面、ダッシュボード背景の変更

OSX Lionのログイン画面およびダッシュボード背景画像の変更方法。

どちらも海外サイトなので、Google翻訳リンクです。

OS Xのライオンのログイン画面の背景を変更する方法

Mac OS Xのライオンのダッシュボードレゴの背景壁紙を変更する

Snow Leopardより変更方法が煩雑になったな〜。
pngで画像サイズをあわせないとダメなのがめんどくさい。

タグ:OSX LION
posted by まきすけ at 06:18 | Comment(0) | TrackBack(0) | Linuxとか