make installする段階で以下のエラーがでてとまった。
vine4.1のときは、何も苦労するところがなかったが。
そのときのnmapのversionはなんだったかな。
error: invalid Python installation: unable to open /usr/lib/python2.4/config/Makefile (No such file or directory)
make: *** [install-zenmap] エラー 1
結局、調べるのも面倒だったのでapt-getでインストール。
あとで調べておこう。
2007年12月29日土曜日
2007年12月10日月曜日
rubyを使って、標準入力から入力を受け付けるプログラムに入力値を渡す
標準入力から入力(整数値)を受け取って、それを用いるプログラムを使用する時のお話。
入力値をー8から8まで1ずつ増やしていき、各々の値に対してそのプログラムを走らせる必要があったのだが、rubyで自動化するのに少し手間取った。
これまでは、perlを用いて下のようにしていた。
これをrubyで行おうとして、はじめは次のように書いた。
ところが、rubyではrubyスクリプト内で用いられているiは""の中では展開されない。
perlでは数値として扱われるところがrubyとperlにおける違いの一つのようだ。
そこで、式展開 #{}を用いて以下のように修正する。
これで期待どおりに動いた。
入力値をー8から8まで1ずつ増やしていき、各々の値に対してそのプログラムを走らせる必要があったのだが、rubyで自動化するのに少し手間取った。
これまでは、perlを用いて下のようにしていた。
#!/usr/bin/perl
for($i=-8; $i<=8; $i++){
system("echo $i | 実行プログラム");
}
これをrubyで行おうとして、はじめは次のように書いた。
#!/usr/bin/ruby
for i in -8..8
system("echo i | 実行ファイル");
end
ところが、rubyではrubyスクリプト内で用いられているiは""の中では展開されない。
perlでは数値として扱われるところがrubyとperlにおける違いの一つのようだ。
そこで、式展開 #{}を用いて以下のように修正する。
#!/usr/bin/ruby
for i in -8..8
system("echo #{i} | 実行ファイル");
end
これで期待どおりに動いた。
2007年11月30日金曜日
program.c:3: error: stray '\241' in program
少し悩まされた。
その理由は、はじめてみるエラーだったということと、コードを見直しても間違いが見えなかったからだ。
googleで検索すると、このエラーメッセージが教えてくれているのは
全角が混ざっている
ということのようだ。そこでスペースを調べると全角の空白が混ざっていた。コードを見直しても気がつかないわけだ。
その理由は、はじめてみるエラーだったということと、コードを見直しても間違いが見えなかったからだ。
googleで検索すると、このエラーメッセージが教えてくれているのは
全角が混ざっている
ということのようだ。そこでスペースを調べると全角の空白が混ざっていた。コードを見直しても気がつかないわけだ。
2007年11月29日木曜日
~/.ssh/known_hosts
Linuxからあるマシンにsshで接続しようとした際の話。
$ssh -X [ユーザー名]@[サーバ名]
として、接続しようとしたが以下のようなエラーメッセージがでた。
------------------エラーメッセージ--------------------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the DSA host key has just been changed.
The fingerprint for the DSA key sent by the remote host is
18:86:0b:ec:64:34:b1:c3:37:49:61:9c:ed:80.
Please contact your system administrator.
Add correct host key in /home/staff/hoge/.ssh/known_hosts to get rid of this message.
Offending key in /home/staff/hoge/.ssh/known_hosts:6
DSA host key has changed and you have requested strict checking.
Host key verification failed.
----------------------------------------------------
エラーメッセージの最初に出力されているように、これは
接続先サーバーと通信するための暗号の鍵が変更されたため
に起こったもの。
鍵は最初に通信した際にクライアント側に保存されており、今回はそれが変更されたとのこと。サーバ管理者に問い合わせたところ、マシンが変わったとか。
そこでクライアント側では、
~/.ssh/known_hostsにおいて、接続先ホストの公開鍵が記述されている部分を削除する
必要があったのだ。
$ssh -X [ユーザー名]@[サーバ名]
として、接続しようとしたが以下のようなエラーメッセージがでた。
------------------エラーメッセージ--------------------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the DSA host key has just been changed.
The fingerprint for the DSA key sent by the remote host is
18:86:0b:ec:64:34:b1:c3:37:49:61:9c:ed:80.
Please contact your system administrator.
Add correct host key in /home/staff/hoge/.ssh/known_hosts to get rid of this message.
Offending key in /home/staff/hoge/.ssh/known_hosts:6
DSA host key has changed and you have requested strict checking.
Host key verification failed.
----------------------------------------------------
エラーメッセージの最初に出力されているように、これは
接続先サーバーと通信するための暗号の鍵が変更されたため
に起こったもの。
鍵は最初に通信した際にクライアント側に保存されており、今回はそれが変更されたとのこと。サーバ管理者に問い合わせたところ、マシンが変わったとか。
そこでクライアント側では、
~/.ssh/known_hostsにおいて、接続先ホストの公開鍵が記述されている部分を削除する
必要があったのだ。
2007年11月28日水曜日
scim-launcherがCPUを100%使用してしまう
vinelinux4.1で作業をしているときの話し。
PCのハードディスク容量が満杯になったため突然、GNOMEの動作が鈍る。
そこでctrl+alt+f1によりコンソールを変え、不要なファイルを削除した後にrebootをかける。
reboot後、再度ログインして作業をしようと思い、gnome-terminalを起動しようとするが起動しない。gnome-terminalに不具合があると思い、apt-getでgnome-terminalを一度removeした後にinstallする。しかし、問題は解決しなかった。
そこでlaucherのメニューからRoot Terminalを起動してみる。すると、これは起動できた。その後、システムモニタも起動できたのでCPU使用率を見ると100%になっている。どのジョブがCPUを喰い尽くしているのかを調べると、
scim-launcherがCPUを喰い尽くしていた。
原因を探るため、
# ps -ef | grep scim-launcher
としてscim-launcherのプロセスIDを調べる。次に、lsofコマンド(デフォルトでなかったのでインストールした)を用いて、scim-launcherが開いているファイルを調べてみた。
# lsof -p プロセスID
すると、ライブラリやバイナリファイル以外で
~/.anthy/last-record2_defaultを開いている
とあった。調べてみると、このファイルの末尾がおかしいと、無限ループに陥るらしい。そのため、このファイルを削除した。
そして再起動すると、scim-launcherがCPUを喰い尽くすことなく、めでたくgnome-terminalを起動できた。
PCのハードディスク容量が満杯になったため突然、GNOMEの動作が鈍る。
そこでctrl+alt+f1によりコンソールを変え、不要なファイルを削除した後にrebootをかける。
reboot後、再度ログインして作業をしようと思い、gnome-terminalを起動しようとするが起動しない。gnome-terminalに不具合があると思い、apt-getでgnome-terminalを一度removeした後にinstallする。しかし、問題は解決しなかった。
そこでlaucherのメニューからRoot Terminalを起動してみる。すると、これは起動できた。その後、システムモニタも起動できたのでCPU使用率を見ると100%になっている。どのジョブがCPUを喰い尽くしているのかを調べると、
scim-launcherがCPUを喰い尽くしていた。
原因を探るため、
# ps -ef | grep scim-launcher
としてscim-launcherのプロセスIDを調べる。次に、lsofコマンド(デフォルトでなかったのでインストールした)を用いて、scim-launcherが開いているファイルを調べてみた。
# lsof -p プロセスID
すると、ライブラリやバイナリファイル以外で
~/.anthy/last-record2_defaultを開いている
とあった。調べてみると、このファイルの末尾がおかしいと、無限ループに陥るらしい。そのため、このファイルを削除した。
そして再起動すると、scim-launcherがCPUを喰い尽くすことなく、めでたくgnome-terminalを起動できた。
2007年11月18日日曜日
perlで文字列置換
HTMLファイルに記すタイムスタンプを更新する必要があった。
その際にファイルを1つずつ手書きで修正するのは大変なので、スクリプトを書いてみた。
#############################################################################
#!/usr/bin/perl
###--- HTMLファイルの文字列修正を行うPerlスクリプト ---###
### カレントディレクトリ(ディレクトリハンドルDIR)をオープンする ###
opendir(DIR,".") || die "cannot open a current directory:\n";
### カレントディレクトリのファイルを@files配列に格納する ###
@files = readdir(DIR);
### ディレクトリハンドル(DIR)を解放する ###
closedir(DIR);
### ファイルのリスト(@files)の要素を1つずつ$oldfileに読み込み操作する ###
foreach $oldfile (@files){
#.htmlという要素を含むファイルだけ操作する
if($oldfile =~/.html/) {
#$oldfileを読み取り専用に開く(ファイルハンドルはFHOLD)
if ( ! open ( FHOLD, "< $oldfile") ) {
print "File not found.\n";
exit(-1);
}
#$newfileを修正後のファイルの書き込み用に開く。ここで適当にファイル名を”temp"として与える
$newfile="temp";
if ( ! open ( FHNEW, "> $newfile") ) {
print "Cannot make file.\n";
exit(-1);
}
#修正するファイルを1行ずつ読み込み(特殊変数$_に格納される)文字列置換する
while (<FHOLD >){
$_ =~ s/置換したい文字列/新たに置き換えられる文字列/g;
#$newfileに一行ずつ書き込んでいく
print FHNEW $_;
}
#開けたら閉じる、ファイルハンドル
close(FHOLD);
close(FHNEW);
#元のファイル名の末尾に.origをつけて元のファイルを保存する
rename($oldfile,"$oldfile.orig");
#置換後の新しいファイルを元のファイル名に変更して保存する
rename($newfile,$oldfile);
}
}
その際にファイルを1つずつ手書きで修正するのは大変なので、スクリプトを書いてみた。
#############################################################################
#!/usr/bin/perl
###--- HTMLファイルの文字列修正を行うPerlスクリプト ---###
### カレントディレクトリ(ディレクトリハンドルDIR)をオープンする ###
opendir(DIR,".") || die "cannot open a current directory:\n";
### カレントディレクトリのファイルを@files配列に格納する ###
@files = readdir(DIR);
### ディレクトリハンドル(DIR)を解放する ###
closedir(DIR);
### ファイルのリスト(@files)の要素を1つずつ$oldfileに読み込み操作する ###
foreach $oldfile (@files){
#.htmlという要素を含むファイルだけ操作する
if($oldfile =~/.html/) {
#$oldfileを読み取り専用に開く(ファイルハンドルはFHOLD)
if ( ! open ( FHOLD, "< $oldfile") ) {
print "File not found.\n";
exit(-1);
}
#$newfileを修正後のファイルの書き込み用に開く。ここで適当にファイル名を”temp"として与える
$newfile="temp";
if ( ! open ( FHNEW, "> $newfile") ) {
print "Cannot make file.\n";
exit(-1);
}
#修正するファイルを1行ずつ読み込み(特殊変数$_に格納される)文字列置換する
while (<FHOLD >){
$_ =~ s/置換したい文字列/新たに置き換えられる文字列/g;
#$newfileに一行ずつ書き込んでいく
print FHNEW $_;
}
#開けたら閉じる、ファイルハンドル
close(FHOLD);
close(FHNEW);
#元のファイル名の末尾に.origをつけて元のファイルを保存する
rename($oldfile,"$oldfile.orig");
#置換後の新しいファイルを元のファイル名に変更して保存する
rename($newfile,$oldfile);
}
}
2007年11月15日木曜日
登録:
投稿 (Atom)