|
結局、68userさんのおっしゃる通りpasswdの挙動を全て把握するのは 厳しいので、telnetされる側のServerにID,Passwordを変数として受け 取って、passwdファイルを直接編集するperlを置き、それをCGI(Perl) からtelnetして、rootで実行させるようにしました。 結局何故expectで動作しないのかは不明なままですが、要求を満たす 物は出来ました。 アドバイスありがとうございました。 |
|
私の場合、次のような感じのスクリプトで動きます。 一応、ログインしてコマンド実行程度なら、大丈夫のようです。 環境は perl 5.00503 + Expect-1.08 + FreeBSD 4.2-BETA です。 #!/usr/bin/perl use Expect; my $user = 'rose'; my $password = 'password'; my $prompt = 'host\{rose\}\d+\s'; my @cmdlist = ( 'ls -alF', 'ps -auxw', 'exit', ); my $telnet = Expect->spawn("telnet localhost"); $telnet->expect(30,"login: ") || die "NO login prompt"; print $telnet "$user\r"; $telnet->expect(30,"assword:") || die "NO password prompt"; print $telnet "$password\r"; my $match = $telnet->expect( 30, "closed by foreign host", "-re", $prompt ); die "refused by server\n" if $match == 1; die "NO shell prompt, ".$telnet->exp_error()."\n" unless $match; foreach $cmd ( @cmdlist ) { print $telnet "$cmd\r"; my $match = $telnet->expect( 30, "closed by foreign host", "-re", $prompt ); last if $match == 1; die "NO prompt after command\n" if $telnet->exp_error(); } $telnet->hard_close(); exit; |
|
最近Unixを始めたのですが、サブルーチンの作り方がわかりません。 (呼び方、書き方) 簡単な例を教えていただけると幸いです。 |
|
awk scriptを使って下の様なことがしたいのですが、方法を教えて下さい。 Input File1: 10 abcde 9 bcdef 12 cdefg Input File2; 3 abcde 5 cdefg 12 defgh ファイル1と2を比較し、$2の内容が同じ場合、file1 と file2 の $1 $2 を output file の $1 $2 $3 $4に出力する。 比較して見つからない 場合はスペースを出力する。 Output file 10 abcde 3 abcde 12 cdefg 5 cdefg 3 abcde 12 defgh よろしくお願いします。 |
|
> サブルーチンの作り方がわかりません。 言語がわからないと何とも言えません。 > awk scriptを使って下の様なことがしたいのですが #!/usr/bin/awk -f BEGIN{ while (getline< ARGV[2] >0 ){ hash[$2]=$1 } while (getline< ARGV[1] >0 ){ if ( hash[$2] ){ print $1,$2,hash[$2],$2 } else { printf "%s %s \n",$1,$2 } delete hash[$2] } close(ARGV[2]); while (getline< ARGV[2] >0 ){ if ( hash[$2] ){ print $1,$2 } } } FreeBSD の awk と Solaris の nawk では動きましたが、 Solaris の awk では動かず。 うーん、awk らしくない…(笑) まぁ awk スクリプトを 書いたのは4年ぶりくらいなので、これで勘弁して下さい。 # 見本求む。 |
|
すみません。 Perlです。 |
|
> # 見本求む。 見本かどうか分かりませんが、私は次のように書きました。 #!/usr/bin/awk -f { array[$2] = sprintf("%s %s", array[$2], $1); } END { for( key in array ){ split(array[key], tmp); if( 2 in tmp ) printf("%s %s %s %s\n", key, tmp[1], key, tmp[2]); else printf("%s %s\n", key, tmp[1]); } } 起動は % awk -f script file1 file2 としてください。連想配列に記録して、最後に出力という感じです。 ただし、次のような $2 が同じだが $1 が違う値を含む形式のデータは 仮定していません。 10 abcde 11 abcde どちらかを捨てるようになっているかと思います。実際にはデータの形式の チェックが要るかと思います。あと出力の順が不定になります。出力の 順番に依存する処理には向きません。動作チェックはしていません。 多分、本家の awk じゃ無理かな。動作チェックは gawk でやっています。 |
|
># 見本求む。 単なるバリエーションということで… #!/usr/bin/awk -f NR == 1 { f = FILENAME } f == FILENAME { hash[$2]=$1 } f != FILENAME { if ( $2 in hash ) { print hash[$2], $2, $1, $2 delete hash[$2] } else print $1, $2 } END { for (r in hash) print hash[r], r } |
|
もう他人の書いた awk スクリプトを見ても意味がわからん (笑) > Perlです。 で、どういう処理をするサブルーチンの例を見たいのですか? あと、素人とか初心者とかいうハンドルはやめてください。 それから、誰に向けて言うわけでもないですが、回答をもらっても 返事をする気がないなら、最初から質問しないでね。 |
|
沢山の回答、どうもありがとうございます。 あとお礼が遅くなってどうもすいません。 試してみてから出そうと思っていたのですが、家にUNixがないので 月曜になってしまいます。 このページを発見して間もないのですが、これから色々質問することもある思うので、その時はまたよろしくお願いします! |
|
行頭のスペース、全角スペースを に置換するように してみました。 if ( m/^(<BR>)?(\>|>)/ ){ $_ = qq(<FONT COLOR="$color{QUOTE}">$_ </font>); } の後に s|^( +)|' ' x length($1)|e; s|^( +)|' ' x length($1)|e; を追加しただけです。 現状でこれをしちゃうとまずい UA ってありますっけ? |
|
こんにちは、はじめての書込ですが... http://tsu.virtualave.net/TSU/whimsy.html 今週上のようなのをやることになったので お時間のある方はどうぞ。(ちなみに日本語コードが 前のようなSJIS固定から、普通の日本語チャンネルと 同様のJISになってます) GUIクライアントは、FreeBSDだとportsにGTK+使うXchat の日本語化版があるそうです。 Linuxだとhttp://dns.manabi.gr.jp/~blend/の辺りが よいかと(FreeBSDでこれrpmから出して使う場合は GNU makeが要ります)。 いずれにせよJISになったので一般に配布されている 日本語化パッチの類が簡単に使用できるようになりま した。 |
|
えっと、早い話が「エポ」の場所教えて下さい!! sachiyo@viola.ocn.ne.jp までメールで教えて下さいっす! |
|
どうも、おひさしぶりです。 > 現状でこれをしちゃうとまずい UA ってありますっけ? 現状の解釈が、わからなかったので、手元のブラウザで 調査しました。 OK win98 IE2 IE4 w3m(cygwin) FreeBSD Nestcape3 chimera w3m NG win98 Netscape3 とりあえず、こんな感じです。 ※ ディスク容量が足りなくなって、だいぶuninstall したので、この程度位までしか調査できませんでした。 |
|
> 68user さん > 行頭のスペース、全角スペースを に置換するように > してみました。 おかげで助かります。今まで、unexpand して投稿していましたが、 インデントが崩れるのが悩みの種でした。 どうもありがとうございます。 |
|
DATを初期化するコマンドって、UNIXでありますか?? |
|
> 行頭のスペース、全角スペースを に置換するように > してみました。 やっぱ、これが一番現実的みたいですね。 ウチでやらなかったのは、当時、使ってたWin95 NN4.1 が カット&ペーストで全角スペースに変換してたからだけど、 今のNN4.73では、ちゃんと半角になります。 ところで、 タブ も変換して貰えると助かるんですが… |
|
> NG win98 Netscape3 なるほど。よく知らないんですが、 が中黒になる んでしたっけ? UNIX 系の NN3 も表示できないと思って いたんですが、OK なんですね。では、Win+NN3 環境は 残念ながら泣いていただく、ということにします。 > ところで、タブも変換して貰えると助かるんですが… tab stop はいくつがお好みですか? (僕は4です) でもこれをやるなら、書き込み時に置換しないと いけないので、 TAB が発見されました。tab stop=4 だと以下のように表示されます。 [OK TAB=2にする TAB=8にする] てな感じ? (笑) ところで行頭以外のスペースを に置換するのって 意味ありますかね? > DATを初期化するコマンドって、UNIXでありますか?? テープ関係はよく知りませんが、mt erase あたりではダメでしょうか。 > http://tsu.virtualave.net/TSU/whimsy.html 僕も何度かおじゃまさせていただきました。お暇な方はどうぞ。 |
|
> が中黒になる そうです。目も当てられないです。 >UNIX 系の NN3 も表示できないと思って 少なくとも、Version 3.04 [ja_euc]はそうでした。 |
|
すいません、追加です。 winで確かめたNetscapeは、Version 3.01です。 .01と.04の差か(不明)? ←信じられん ※ win+NN3は、サポート外でいいと、思います。 ほとんどNN4/IE4以上だろうし・・・ |
|
どなたかP内部のCPUやメモリーやモデムなどに詳しい方 色々教えて下さい。 仕事上、自らバージョンアップをしたいと考えていますのでよろしくお願いします。 またこのURLは現在の仕事上のものです。 興味がある方はアクセスしてください。 |
|
No.1343,1345、1346の例を参考にやってみたのですが、SolarisのAwkでは動きませんでした、、、、 そこで、InputFile1の$2だけをInputFile3にcopyして、InputFile2の$2を、InputFile4にCopyし、単純にINputFile3、と4を比較し、同じ内容はOutputFile1へ、違う内容はOutputFile2へ出すようにするのであれば、Awkでもできるでしょうか? |
|
nawk では動きませんか。 # の話はまた明日…。 |