|
こんにちは。 http://X68000.startshop.co.jp/~68user/が正式なURLとの事ですが、OmniWeb4.0.6というブラウザを使うとアドレスを読み込み出来ない旨が表示され以下のようなエラーが表示されます。 http://www2.startshop.co.jp/~68user/では正常に表示されます。 Mar 19 00:45:16 http://X68000.startshop.co.jp/~68user/(HTTP): Host not found: u30dbu30b9u30c8 x68000.startshop.co.jp u306fu3042u308au307eu305bu3093 Mar 19 00:45:16 http://X68000.startshop.co.jp/~68user/ (HTTP): Host not found: ホスト x68000.startshop.co.jp はありません ブラウザのバグかもしれませんが、一応ご報告まで。 ネットワークプログラミングの基礎知識、とても参考になります。 では。 |
|
>>2588 狂態公開 う〜ん。 ;; ANSWER SECTION: x68000.startshop.co.jp. 17h56m14s IN CNAME ww2.startshop.co.jp. www2.startshop.co.jp. 17h56m14s IN A 210.249.139.22 CNAMEか・・ 狂態公開さんの所のDNSサーバーがおかしいんだと思うぞう。 |
|
x68000.startshop.co.jp. 17h56m14s IN CNAME www2.startshop.co.jp. だな。wを一つ消してもた |
|
初めまして、こんばんわ。 ブックさせて頂いて、お勉強させて頂いております。m(_ _)m レンタルサーバを1台借りて、色々しているのですが 今回IPアドレスを2つ追加したのはいいけれど、設定に途方にくれて 書き込みさせて頂いております。 ifconfig_fxp0="inet 210.224.181.hhh netmask 255.255.255.0" ifconfig_fxp0_alias0="inet 210.224.177.ttt netmask 255.255.255.255" 現状に、追加 210.188.eee.6/31 (7も有効)ということで ifconfig_fxp2_alias0="inet 210.188.eee.6 netmask 255.255.255.254" を、追加した次点ではpingでもちゃんと返って来てたのが・・ ifconfig_fxp3_alias0="inet 210.188.eee.7 netmask 255.255.255.254" も、追加したら 6では パケットエラー、7では1行出てそれ以降は いつまでたってもうんともすんとも状態になってしまいました。 が、これはtera term menu で自分サーバー内からのことで、外から TELNET使用すると普通にpingで返ってくるのですが、これはどう考えたらよいものなのでしょうか。 ご存じの方いらっしゃいましたら、アドバイスを頂きたく書き込みさせて頂きました。宜しくお願い致します。 |
|
>>2591 あや まず、OS 名とバージョンを書きましょう。FreeBSD っぽいので FreeBSD として回答します。 fxp0, fxp2, fxp3 ということは、NIC 3 枚差しなのですか? ifconfig -a で fxp0, fxp2, fxp3 それぞれの情報がちゃんと 出てきます? > ifconfig_fxp2_alias0="inet 210.188.eee.6 netmask 255.255.255.254" > を、追加した もし /etc/rc.conf を編集してリブートしているのでしたら、それは やめて、コマンドラインから # ifconfig fxp2 inet 210.188.eee.6 alias netmask 255.255.255.254 などとして、その後 # ifconfig -a で確認するようにして下さい。 で、要は # ifconfig fxp0 inet 210.224.181.hhh netmask 255.255.255.0 # ifconfig fxp0 inet 210.224.177.ttt alias netmask 255.255.255.255 # ifconfig fxp2 inet 210.188.eee.6 alias netmask 255.255.255.254 # ifconfig fxp3 inet 210.188.eee.7 alias netmask 255.255.255.254 とした、ということですか? fxp2 と fxp3 にそれぞれ重複して IP アドレスを振ってないならば、 「alias」を削って # ifconfig fxp0 inet 210.224.181.hhh netmask 255.255.255.0 # ifconfig fxp0 inet 210.224.177.ttt alias netmask 255.255.255.255 # ifconfig fxp2 inet 210.188.eee.6 netmask 255.255.255.254 # ifconfig fxp3 inet 210.188.eee.7 netmask 255.255.255.254 じゃないかなと思います (ifconfig の実装によっては OK なのかも)。 > も、追加したら 6では パケットエラー、7では1行出てそれ以降は > いつまでたってもうんともすんとも状態になってしまいました。 エラーの内容を具体的に書きましょう。 で、ping が通らないということは、インタフェースが認識されていないか、 ルーティングテーブルがおかしいか、arp テーブルがおかしいのでしょう。 netstat -a、netstat -r、arp -a の結果はどうなってますか? |
|
>>2587 pyu > マイクロ秒:百万分の一秒 であり、0.001 秒単位ではなく、例の説明も > 違っていると思います。 ご指摘ありがとうございます。早速修正しました。 http://x68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/unix/org/func.src 僕はマイクロ=ミリ (ミリはマイクロの略称) だと完全に勘違いしていたのですが、 ミリ秒=1/1,000 秒 マイクロ秒=1/1,000,000 秒 なのですね。よく考えれば1ミリメートルと1マイクロメートルが同じ長さなはずが ない、と。 >>2588 狂態公開 > OmniWeb4.0.6というブラウザを使うとアドレスを読み込み出来ない旨が > 表示され以下のようなエラーが表示されます。 うーむ、僕も DNS がおかしいのではないかと思うのですが…。 もし Mac OS X をお使いでしたら、ping や nslookup を 試してみて下さい。 |
|
>>2586 超初心者 > 参考にFTPプログラムを作成していますが、プログラム中で、 > cdコマンド、putコマンド相当の処理を行う場合はどのような記述を > すればよいか教えていただけないでしょうか(_0_) perl 編で、FTP プロトコルそのものの解説をしておりますので、ご一読下さい。 http://x68000.startshop.co.jp/~68user/net/ftp-1.html http://x68000.startshop.co.jp/~68user/net/ftp-2.html http://x68000.startshop.co.jp/~68user/net/ftp-3.html http://x68000.startshop.co.jp/~68user/net/ftp-4.html >>2584 persianopeh > 親プロセスは子プロセスの終了ステータスを受けとらなければならないため、 > waitが必要だと思います。 ごもっともです。wait をすっかり忘れておりました。 ただ、解説も一緒に付けたいので、少し時間を下さいませ。 |
|
>>2585 小僧 > マウントを行うときに、オプション指定で大文字、小文字を判定させる > 事は可能なのでしょうか? まず基礎知識。CD-ROM にはいくつかフォーマットの種類があります。 http://www.zdnet.co.jp/magazine/pcjapan/0105/sp2/09.html http://publib.boulder.ibm.com/doc_link/Ja_JP/a_doc_lib/cmds/aixcmds1/toc.htm ISO9660 は大文字・小文字を区別しません (たぶん全て大文字で記録される)。 Joliet は、MS-DOS の 8.3 形式とロングファイルネームの2つのファイル名を 持ちます。UNIX のように大文字・小文字を区別するには RockRidge (ロックリッジ) というフォーマットを使います。 よって、その CD-ROM が ISO9660 で作られているなら、大文字小文字の 区別はできません。ただし Windows で大文字小文字が区別されている ということは、その CD-ROM は Joliet か RockRidge なのかもしれません。 Windows で見て、8.3 形式とロングファイルネームの両方が表示されるなら、 それは Joliet 形式かもしれません (本当かなぁ)。 なお、AIX は Joliet には非対応ですが、RockRidge には対応しているようです。 http://publib.boulder.ibm.com/doc_link/Ja_JP/a_doc_lib/aixbman/admnconc/fs_overview.htm これらのファイルタイプを mount のオプションで指定する方法は、web の マニュアルからは読みとれませんでした (むしろ cdrfs を指定すれば 自動認識してくれそうに思える)。 というわけで、残念ながら解決法はわかりませんでした。 >>2852 mattu > 最初にログインした、IPアドレスから他のアドレスへログインする > 事ってできますか? 質問の意味がわかりません。 |
|
>>2581 q19_77 > ユーザ"mono"にパスワードがないため、なぜか実行できました。 なるほど、納得です。 >> echo PASSWORD | su root -c /usr/bin/id >>でプログラムの実行ができました。 > この場合、rootのパスワードが必要かと思いますが、そこはどのように > されているのでしょうか。 echo PASSWORD の部分に root のパスワードを書いています。 > perlのバージョンは、perl-5.6.0-12ですが、 > シェルスクリプトはどちらもperlを使用しておりません。 それは、ふくしさんに対しての回答です。今回の問題で perl のバージョンを 疑っているわけではありません。 一番簡単なのは root 権限で su - mono -c /home/mono/mno.sh とすることです。root 権限なら何の問題もなくできるはず。 また、問題を切り分けましょう。 > ssh abc.world.co.jp sh /home/mono/mno2.sh ここで tty を要求している可能性もないとは言えませんので、まずは su - mono -c /usr/bin/id から始めるべきです。 |
|
お世話になります。m(_ _)m FreeBSD 3.5.1 を 利用しております。 すみません、前回書き込みが間違っていました。 NICは1枚です。IPは計4つの状態です。 rc.conf の中身は現在下記のようにしています。 ifconfig_fxp0="inet 210.224.171.ttt netmask 255.255.255.0" ifconfig_fxp0_alias0="inet 210.224.177.hhh netmask 255.255.255.255" ifconfig_fxp0_alias1="inet 210.188.fff.6 netmask 255.255.255.254" ifconfig_fxp0_alias2="inet 210.188.fff.7 netmask 255.255.255.254" ww# ping 210.188.fff.6 PING 210.188.fff.6 (210.188.fff.6): 56 data bytes ping: sendto: Can't assign requested address ・ ・ と、続いて www# ping 210.188.fff.7 PING 210.188.fff.7 (210.188.fff.7): 56 data bytes この行のみしか出ません。 ww# ifconfig -a fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 inet 210.224.171.ttt netmask 0xffffff00 broadcast 210.224.171.ttt inet 210.224.177.hhh netmask 0xffffffff broadcast 210.224.177.hhh inet 210.188.fff.6 netmask 0xfffffffe broadcast 210.188.fff.7 inet 210.188.fff.7 netmask 0xfffffffe broadcast 210.188.fff.7 www# netstat -a Active Internet connections (including servers) Proto Recv-Q Send-Q Local Address Foreign Address (state) tcp 0 6823 210.224.177.hhh.http TKTcd-01p91.ppp..1696 FIN_WAIT_1 tcp 0 0 210.224.177.hhh.http TKTcd-01p91.ppp..1694 TIME_WAIT tcp 0 0 210.224.177.hhh.http 203.139.83.201.4518 FIN_WAIT_2 tcp 0 0 210.224.177.hhh.http 210.225.27.166.13100 FIN_WAIT_2 tcp 0 0 210.224.177.hhh.http 210.225.27.166.13088 FIN_WAIT_2 tcp 0 4 www.telnet c85242.tctv.ne.j.1872 ESTABLISHED tcp 0 0 *.http *.* LISTEN tcp 0 0 *.smtp *.* LISTEN tcp 0 0 *.pop3 *.* LISTEN tcp 0 0 *.telnet *.* LISTEN tcp 0 0 *.ftp *.* LISTEN tcp 0 0 *.sunrpc *.* LISTEN udp 0 0 *.sunrpc *.* udp 0 0 *.syslog *.* Active UNIX domain sockets Address Type Recv-Q Send-Q Inode Conn Refs Nextref Addr c89aaf80 dgram 0 0 0 c89a0fc0 0 c89aafc0 c89aafc0 dgram 0 0 0 c89a0fc0 0 0 c89a0fc0 dgram 0 0 c899f680 0 c89aaf80 0 /var/run/log www# netstat -r Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire default oscrt1e-L5.gw.saku UGSc 26 1593573 fxp0 localhost localhost UH 0 112 lo0 210.188.fff.6 0:e0:18:e0:10:2b UHLWb 0 10 lo0 => 210.188.fff.6/31 link#1 UC 0 0 fxp0 210.188.fff.7 ff:ff:ff:ff:ff:ff UHLWb 0 141 fxp0 210.224.171 link#1 UC 0 0 fxp0 oscrt1e-L5.gw.saku 0:0:5e:0:1:16 UHLW 26 0 fxp0 1200 oscrt2e-L5.gw.saku 0:e0:80:2f:1d:0 UHLW 0 0 fxp0 1199 210.224.177.hhh/32 link#1 UC 0 0 fxp0 www# arp -a ? (210.188.fff.6) at 0:e0:18:e0:10:2b permanent [ethernet] ? (210.188.fff.7) at ff:ff:ff:ff:ff:ff permanent [ethernet] oscrt1e-L5.gw.sakura.ad.jp (210.224.171.1) at 0:0:5e:0:1:16 [ethernet] oscrt2e-L5.gw.sakura.ad.jp (210.224.171.2) at 0:e0:80:2f:1d:0 [ethernet] このようになっております。宜しくお願い致します。 |
|
>>2596 68user ご返答ありがとうございます。 su - mono -c /usr/bin/id として試してみましたが、やはりmonoユーザになれないようでした。 68userさんの言われる通り、以下のようにroot権限で処理を行うように しましたところ、上手く動作しました。 sudorsファイルにmonoユーザがroot権限で"su"できるよう記述 mono ALL= NOPASSWD: /bin/su シェルスクリプトファイルに以下のように記述 sudo su - mono -c /home/mono/mno.sh 上手く動作しなかった原因と対処法は分かりませんでしたが、 動作するようになりましたので、よかったです。 どうもありがとうございました。 |
|
>>2597 あや > ifconfig_fxp0_alias2="inet 210.188.fff.7 netmask 255.255.255.254" ifconfig_fxp0_alias2="inet 210.188.fff.7 netmask 255.255.255.255" だと思います。 // 以下参照 http://www.freebsd.org/ja/handbook/configtuning-virtual-hosts.html |
|
早速ありがとうございます。 210.188.fff.6/31 として 6と7がIPとして有効。 /31と言うことで255.255.255.254としていたのですが、 7の場合は255.255.255.255とする理由をご伝授頂ければ勉強になります。 ww# ping 210.188.fff.6 PING 210.188.fff.6 (210.188.fff.6): 56 data bytes ping: sendto: Can't assign requested address ・ ・ と、続いて www# ping 210.188.fff.7 PING 210.188.fff.7 (210.188.fff.7): 56 data bytes ping: sendto: Can't assign requested address ・ ・ と、続くようにはなりましたが。 何度もすみません。宜しくお願い致します。 |
|
いまさらながら気づいたのですが、 >>2597 あや > ifconfig_fxp0_alias1="inet 210.188.fff.6 netmask 255.255.255.254" > ifconfig_fxp0_alias2="inet 210.188.fff.7 netmask 255.255.255.254" これは根本的に無理でしょう。210.188.fff.6/31 ってことは、 210.188.fff.6 … ネットワークアドレス 210.188.fff.7 … ブロードキャストアドレス となってしまい、IP アドレスを1つも振ることはできません。ネットワーク アドレス部は 30 ビット以下でないとおかしい。 うちの FreeBSD 4.4-RELEASE でも # ifconfig vr0 inet 10.1.1.1 alias netmask 255.255.255.254 とすると、 ping: sendto: Can't assign requested address となりました。 >>2599 hsj > http://www.freebsd.org/ja/handbook/configtuning-virtual-hosts.html に従って、 # ifconfig vr0 inet 10.1.1.1 alias netmask 255.255.255.252 # ifconfig vr0 inet 10.1.1.2 alias netmask 255.255.255.255 としたら OK でした。 |
|
>>2595 68user お世話になります。 色々調べて頂いてありがとうございます。 その後、調査をした結果、方法がわかりました。 #mount -V cdrfs -r -o nocase /dev/cd0 /mnt コマンドで、大文字、小文字を判定してくれました。 必要なオプションは"-o nocase"だったようです。 時間を割いて調査して頂き、ありがとうございました。 |
|
>>2601 68user > これは根本的に無理でしょう。210.188.fff.6/31 ってことは、 > 210.188.fff.6 … ネットワークアドレス > 210.188.fff.7 … ブロードキャストアドレス > となってしまい、IP アドレスを1つも振ることはできません。ネットワーク > アドレス部は 30 ビット以下でないとおかしい。 あ、そりゃそうですね・・・。 設定にだけ目がいって基本的な部分を見落としてました(苦笑 そういえば、本題とは関係ありませんが件のページの、 > システムは 10.1.1.0 には 10.1.1.1 として, 202.0.75.20 には > 202.0.75.17 として現れるようにします. は、やっぱり「202.0.75.16 には202.0.75.17 として〜」と 書きたかったんでしょーか。 >>2600 あや > 255.255.255.255とする理由をご伝授頂ければ勉強になります。 これはFreeBSDの場合はそう言うモンだとしか。 ちゃんと調べたわけではありませんが、ルーティングとかの絡みでの 単なる実装上の都合ではないでしょうか。 |
|
>>2603 hsj > 「202.0.75.16 には202.0.75.17 として〜」と書きたかったんでしょーか。 原文は http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/configtuning-virtual-hosts.html We want the system to appear at 10.1.1.1 through 10.1.1.5 and at 202.0.75.17 through 202.0.75.20. なので、 10.1.1.1 から 10.1.1.5 まで、202.0.75.17 から 202.0.75.20 まで てなところではないでしょうか。 誤訳かなぁと思うのですが、自信なし。 |
|
ご教授、本当にありがとうございました。m(_ _)m 今回、全部ではないですが理解出来た部分が増えました。m(_ _)m 元々のレンタサーバからの設定が通常とは違うのか、かなりの時間を 経て本日回答は 255.255.255.255 設定にして下さいとのことでした。 ping すると 返ってくるので、こういう設定もあるのかと 又 少し頭を かかえたりもですが。(ーー; 本当にほんとうに、ありがとうございました。m(_ _)m m(_ _)m m(_ _)m |
|
ActivePerl について質問です。 (ActivePerl-5.6.1.631-MSWin32-x86.msi を使っています) Windows 2000 から`拡張子 pl を使うと、 C:\> foo.pl のようにコマンドのように実行できるようになりましたが、 <> を使ってコマンドラインからファイルを入力すると、 引数にファイル名を渡すと OK ですが (C:\> foo.pl bar.txt のような状態) インプットリダイレクションすると NG です。 (C:\> foo.pl < bar.txt のような状態) 症状は、1行も読み込みません。 これはこういう現象なのでしょうか? 内部的になにが起こっているのでしょうか? もしなにかわかりましたらご教示ください。 |
|
お世話になります。 また質問をさせて頂きます。 AIXサーバ(ver 4.3.3)から、ファイルを3490テープに出力し、 そのファイルをホスト(S/390)が受取り、処理を行う、 という運用があるのですが、AIXサーバからファイルを3490テープに 出力する方法がまったくわかりません。 上記質問とは関係のない、3490テープに関する情報でも構いませんので、 ご存知の方がいらっしゃいましたら、情報をアナウンスして頂ければ幸いです。 また、必要な情報が何なのかも分かっていません。 「これを読んで勉強してこい」という情報でも構いませんので、 宜しくお願い致します。 |
|
POP3についての質問です。 Webメールクライアントに興味があり、 初めてFreeBSDをインストールしたのですが 事ある毎に何日も嵌り続けています(^^; 今回、問題の切り分けも自力で出来ずに悩んでいます。 何か良いアドバイスを頂ければと思い書き込みさせて頂きます。 FreeBSD + checkpassword を使いPOPサーバーを起動しています。 例えば User@bsd.com 宛のメールを閲覧するのにPOP3Client.pmを使った perlスクリプトなのですが何故か、私の組んだサーバーを含むいくつかの サーバーで「ユーザー認証が出来ません」 ただ、どのサーバーも telnet で 110ポートへ接続して > USER User > PASS Pass > LIST とすると認証され一覧も表示されます。 Web上で見つけた他のクライアントソフト(peepmail)で試したのですが 同じように特定サーバーで認証エラーが発生します。 その後SOCKET部分の問題かと思い 参考文献によくあるような 〜 略 〜 select(SOCKET); $|=1; select(STDOUT); print SOCKET "USER $username\r\n"; print SOCKET "PASS $passwd\r\n"; print SOCKET "LIST\r\n"; 〜 略 〜 では +OK <8182.1017479300@bsd.com> といった返事しか得られなかった為に 〜 略 〜 select(SOCKET); $|=1; select(STDOUT); print SOCKET "USER $username\r\n"; $tmp = <SOCKET>; print SOCKET "PASS $passwd\r\n"; $tmp = <SOCKET>; print SOCKET "LIST\r\n"; $tmp = <SOCKET>; 〜 略 〜 又は 〜 略 〜 select(SOCKET); $|=1; select(STDOUT); print SOCKET "USER $username\r\n"; print SOCKET "PASS $passwd\r\n"; sleep(1); print SOCKET "LIST\r\n"; 〜 略 〜 とした所、サーバーからの応答が得られました。 この事と関係しているのでしょうか? POP3Client.pm の内容も見たのですが全然分かりません。。。 原因はどの辺りにあるのか、アドバイスを頂けないでしょうか。 |
|
自己レスです。 POP3Client の呼び出しで > TIMEOUT => 60 というタイムアウト指定項目がありこれを 設定した所、無事に動作致しました。 結局の所、反応の遅いサーバーではタイムアウト指定を してあげないといけなかっただけのようです。 1週間以上悩んでいた事が BBSへ書き込んで数時間で解決しました(^^; |
|
>>2609 sio DEBUG=>1 としておけば気づきやすかったかもしれませんね。 |
|
SOCKETを使ったHTTPクライアントソフトで認証のページに アクセスする方法はどうするのでしょうか? |
|
>>2611 hama 認証が必要なページを読むと、Basic 認証が必要なページならば HTTP/1.1 401 Authorization Required WWW-Authenticate: Basic realm="This URI is required authentication" というようなレスポンスが返ってきます。 もしユーザ名が USER、パスワードが SECRET なら、クライアントは USER:SECRET という文字列を作り、それを base64 でエンコードした VVNFUjpTRUNSRVQK という文字列を「Authorization: Basic 」に続けて送ります。つまり GET / HTTP/1.0 Authorization: Basic VVNFUjpTRUNSRVQK こんな感じ。 Digest 認証ならば、web サーバは WWW-Authenticate: Digest realm="testrealm@host.com", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", opaque="5ccc069c403ebaf9f0171e9517f40e41 という感じのを返してくるので、クライアントは GET / HTTP/1.0 Authorization: Digest username="hoge", realm="testrealm@host.com", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", uri="/", response="e966c932a9242554e42c8ee200cec7f6", opaque="5ccc069c403ebaf9f0171e9517f40e41" こんな感じで。 詳細はこちらを。 http://www.ietf.org/rfc/rfc2617.txt |
|
はじめまして、いつも勉強させて頂いております。 バージョン管理ソフトのCVSについて質問です。 ソースをレポジトリにインポートすると「ファイル名,v」となります。 ,vが管理されていると言う事だと思うのですが、この管理している ソースを直接WEBに反映したいのですが,vがある事でもとのファイルがみつからないとのエラーがブラウザに表示されてしまいます。 CVSROOTの中(loginfo等)はそれぞれ、元のファイルと,vのファイルがあり、チェックアウトしてソースを修正して戻すと両方のファイルが 更新されています。このようにする方法は無いのでしょうか。 以上、宜しくお願いします。 |
|
申し訳ないです。下の質問わかりにくいですね。 例えばindex.htmlをインポートするとindex.html,vとなってしまう為 ブラウザーでindex.htmlを表示できないという事です。 宜しくお願いします。 |
|
>>2614 kouhei 目的は、履歴 (index.html,v) を表示することですか? それともコンテンツ (index.html) を表示することですか? |
|
>>2615 68user 追加。 もし後者だとしたら、リポジトリを直接ブラウザで見ようとして いるのはなぜですか? |
|
素早いレスありがとうございます。 目的はコンテンツ(index.html)を表示したいということです。 参考にトップページのソースを拝見させていただきました。 1行目に<!--$ID:index.html,v 〜 があるというこはindex.htmlを 管理しているという事ですよね。これはチェックアウトした物を表示 しているのですか。 私がやりたいのはインポートしたindex.htmlを表示したいという事です 以上、宜しくお願いします。 |
|
追加。 もしかして普通はこんな事しませんか。 テスト用サーバでcommitと同時に画面に反映されたらテストが楽に なると思ったので。動作確認ができたら本番サーバにリリースする というような事を考えていました。 実現できるのでしょうか。 |
|
>>2618 kouhei > テスト用サーバでcommitと同時に画面に反映されたらテストが楽に > なると思ったので。動作確認ができたら本番サーバにリリースする > というような事を考えていました。 運用の問題になりますが、commit しないとテストできないというのは 面倒ではないですか? 普通、ちょっと作ってはブラウザで確認、不具合を修正し、確認し…と 修正・確認を繰り返して、まぁ問題ないだろうというときになったら commit するものだと思います。 よって、 - CVSROOT が /home/user/cvsroot - テスト環境を置くディレクトリが /home/user/public_html/ - 本番環境を置くディレクトリが /usr/local/www/data/ だとしたら、 % cd /home/user/public_html (ここで修正・確認を繰り返す) % cvs commit % cd /usr/local/www/data/ % cvs update (本番環境に反映。あるいは再度 checkout しなおしてもよい) とするのがよいと思います。 CVSROOT/loginfo をいじれば、commit した瞬間に本番環境へ反映させる ことは不可能ではありませんが、常に本番環境に即時反映されるのも困る 場合があるんじゃないでしょうか? また、本番環境への自動反映であれば、cron で定期的に更新するという 手もあります。loginfo で凝ったことをするより、cron で小回りのきく 単純なシステムを作った方がいいかもしれません。 |
|
ありがとうございます。 チェックアウト先をWindowsのローカルにと考えていたのが 悪かったようです。Unix上にチェックアウトしてSambaで編集すれば 良いのですね。開発がサーブレットとjspとオラクルだったのもので 気軽にローカルでテスト環境を作るというのが難しかった為、サーバに 戻してテストしようと考えていました。 cronは便利そうですね。使った事ないですが勉強しようと思います。 以上、ありがとうございました。 |
|
>>2620 kouhei > 開発がサーブレットとjspとオラクルだったのもので気軽にローカルで > テスト環境を作るというのが難しかった為 なるほど。 でも、開発を各マシン上で行えると便利ですよ。 開発環境は各マシンで Windows+JBuilder+Tomcat+PostgreSQL 用 JDBC ドライバ (テスト用サーバで PostgreSQL が稼働) テスト & 本番環境は UNIX+Tomcat+Oracle てな感じで やっているところを見たことがあります。 Oracle と Tomcat を違いではまらないように、開発者は SQL を 直接書かず、DB 担当者が SQL を一括管理していましたが、そのかわり 「今から開発マシン落としま〜す」 「なんだ開発できねぇじゃねーか」 とかいうことがなくなりますし、同じファイルを同時にいじくって しまう危険もないですね。 まあ、ある程度の規模にならないとメリットも出てこないので、 kouhei さんの環境でもそうするべきかどうかはわかりませんが、 参考まで。 |
|
2つのファイルの比較について、 hogeとfooという2つのファイルが場合、 この2つのファイルから、同一の内容)行を出力するコマンドは どのようなものがありますか? |
|
2つのファイルの比較について、 hogeとfooという2つのファイルがある場合、 この2つのファイルから、同一の内容の行を出力するコマンドは どのようなものがありますか? |
|
下記で同じ質問をしたところ、回答をいただいて解決しました。 http://www.parkcity.ne.jp/~chaichan/qanda/qa2652.htm |
|
マルチポストですか・・・>あやの |
|
お世話になってます。すみませんがもう一つ質問させてください。 CVSでコミットと同時にメールで複数人に通知したいのですが、設定がよくわかりません。 一応、以下の内容をloginfoに加えればメールは送られるのですが コミットに1分以上、時間がかかってしまい使えません。 ALL (echo ""; id; echo %{sVv}; date; cat) | mail メールアドレス パールを使う以下の方法も試したのですがパールの中でエラーが出てしまいます。 DEFAULT /usr/local/lib/cvs/contrib/log %s -m メールアドレス -f $CVSROOT/CVSROOT/commitlog エラー内容は 〜/user/local/lib/cvs/contrib/log line 172. です。 ----------------------------------------------------------- /user/local/lib/cvs/contrib/log ----------------------------------------------------------- close(OUT); die "Write to $logfile failed" if $?; close(MAIL); die "Pipe to $mailcmd failed" if $?; ← 172行目 ----------------------------------------------------------- 環境はLINUXです。 メール自動送信の方法をご伝授して頂けないでしょうか。 宜しくお願いします。 |
|
>>2626 kouhei > コミットに1分以上、時間がかかってしまい使えません。 > ALL (echo ""; id; echo %{sVv}; date; cat) | mail メールアドレス 普通に考えると、commit に時間がかかる場所は mail コマンド以外には 考えられないので、まずはコマンドラインから % mail メールアドレス で試してみるべきでしょう。 > パールを使う以下の方法も試したのですがパールの中でエラーが出てしまいます。 こちらも % Mail -s 'CVS update: $modulepath メールアドレス や % /usr/local/lib/cvs/contrib/log %s -m メールアドレス -f $CVSROOT/CVSROOT/commitlog などをコマンドラインから実行して、再現するかどうか試しましょう。 うちでは http://www-vox.dj.kit.ac.jp/nishi/cvsbook/ の mailto-committers.pl.txt を 使っています。 - CVSROOT に jcode.pl を cvs add。 - CVSROOT に mailto-committers.pl を cvs add。 - CVSROOT/checkoutlist に mailto-committers.pl jcode.pl を追加し、commit。 - CVSROOT/mailto-committers.pl を以下のように変更 --- CVSROOT/mailto-committers.pl 2001/04/05 07:05:28 1.1 +++ CVSROOT/mailto-committers.pl 2001/04/17 04:12:00 1.8 @@ -1,23 +1,24 @@ #!/usr/bin/perl # -# $Id: mailto-committers.pl,v 1.1 2001/04/05 07:05:28 mat Exp $ +# $Id: mailto-committers.pl,v 1.8 2001/04/17 04:12:00 mat Exp $ # Copyright (C) 1998 Hajime BABA. All rights reserved. # -require 'jcode.pl'; +require '/MASTER/cvs/CVSROOT/jcode.pl'; -$cvs = "/usr/bin/cvs"; -$rcsdiff = "/usr/bin/rcsdiff"; -$sendmail = "/usr/sbin/sendmail"; +$cvs = "/usr/local/bin/cvs"; +$rcsdiff = "/usr/local/bin/rcsdiff"; +$sendmail = "/usr/lib/sendmail"; sub parse_args { my(@tmp, $tmp); - $CVSROOT = ENV{'CVSROOT'}; + $CVSROOT = $ENV{'CVSROOT'}; + $CVSROOT =~ s/.*://; print $ARGV[0], "\n" if $debug; $ARGV[0] =~ s/ - New directory//go; @@ -49,6 +50,7 @@ sub set_header { my(@h, $file, @tmp, $date); open(HISTORY, "$tail -$files $CVSROOT/CVSROOT/history |") || die; @h = <HISTORY>; close(HISTORY); @@ -84,8 +86,8 @@ sub todate { sub mail_notification { my($file, $fullname, $old, $new, $tmp); - open(MAIL, ">> /tmp/commitlog"); + open(MAIL, "| $sendmail -odb -oem -t"); print(MAIL "$subject"); print(MAIL "$header"); - loginfo に DEFAULT $CVSROOT/CVSROOT/mailto-committers.pl %{sVv} $USER メールアドレス を追加し、commit。 |
|
mailto-committers.plの方法を試しましたが結果は同じで1分以上待ってから送信されます。 %mail メールアドレスは普通に送信されました。 もう少し調べてみます。 |
|
はじめまして、メールサーバの管理をしているのですが、 最近サーバがpopユーザ数に対応しきれず、 pop.lockがかかってメールが取れない事が頻繁に発生しています。 popデーモンはqpopperをつかっています。 そこで、このロックの解除方法で疑問があります。 qpopperが起動すると、まず、/var/mai/.user-id.popファイルにコピーを作成。 無事にコピーが終わると、/var/mai/user-idはサイズ0に切り詰められる。 POPサーバーは、このコピーと、解析した結果を元にクライアントとやりとりします。 ネットで調べると、.user-id.popファイルを削除する方法をよく見かけますが、 途中でセッションが切れてロックファイルが残ってしまったような場合、 この方法では受信し切れなかった分のメールはなくなってしまうのでしょうか? ほっとけば30分でロックファイルはなくりますが、 これもただ強制的にロックファイルを削除しているだけなのでしょうか? また、popのプロセスをkillする方法もありますが、この場合のロックファイルは どう処理されるのでしょうか? ご指導、宜しくお願いします。 |
|
>>2629 john 一口に qpopper と言っても、2.5x 系、3.x 系、4.0.x 系 などがあります。 ちゃんとバージョンを書きましょう。 > qpopperが起動すると、まず、/var/mai/.user-id.popファイルにコピーを作成。 > 無事にコピーが終わると、/var/mai/user-idはサイズ0に切り詰められる。 > POPサーバーは、このコピーと、解析した結果を元にクライアントとやりとりします。 4.0.3 では、 認証完了 → user-id.lock 作成 → user-id を .user-id.pop にコピー → user-id を 0 バイトに → user-id.lock 削除 でした。「pop.lock」ってどのことを指してますか? あるいは本当に 「pop.lock」というファイルがあるのでしょうか? |
|
お世話になります、小僧です。 質問をさせてください。 あるシェルをバックグランドで実行させ、 その後Window を閉じる、という処理を行おうとしています。 過去ログなどを参照した結果、実行コマンドは nohup ???.sh & でいいと思うのですが、終了のさせかたに疑問が残ります。 と、言うのも logout コマンドは受け付けてくれるのですが、 exit コマンドは 1 回目は受け付けてくれません。 ( 2 回叩くと exit してくれます・・・) 本で調べた結果、exit は「シェルスクリプトを終了」し、 logout は「ログインシェル」を終了させると書いてありましたが、 この意味するところがわからなく、困っています。 この 2 つのコマンドの違いが分かるか方がいらっしゃいましたら、 アドバイスをお願い致します。 −−− OS は AIX 4.3 シェルは ksh 調べた本は「UNIX クイックリファレンス」 です。 宜しくお願い致します。 |
|
>>2631 小僧 > logout コマンドは受け付けてくれるのですが、 > exit コマンドは 1 回目は受け付けてくれません。 それはまた謎な話ですね。 % nohup sleep 100 & % exit でも再現しますか? 単に (nohup を実行せずに) % exit だと? また、「受け付けてくれない」とはどういう状況を指してますか? 何かエラーメッセージは出ますか? |
|
>>2632 68user お世話になります、小僧です。 早速の返信、ありがとうございます。 68user さんが記述されているコマンドを実行してみました。 以下、結果です。 ---------- Start # nohup sleep 100 & [1] 37802 # nohup の出力を nohup.out に送信します。 # exit 実行中のジョブがあります。 ---------- End 情報が足りなかったのですが、 「受け付けてくれない」というのは "実行中のジョブがあります。"メッセージが 表示されて、終了されないことを指しています。 ちなみに、上記の状態でもう一度「exit」を実行すると、 上手く画面が消えてくれます。 宜しくお願い致します。 |
|
>>2633 小僧 > "実行中のジョブがあります。" それはシェルが 「実行中のジョブがあるけど、本当に exit で抜けてよいのか?」 と親切に聞いてくれているのです。 これはただの警告であって、抜けようと思えばいくらでも抜けられます。 二度目の exit は 「警告したにもかかわらず再度 exit しようとした」 ということで、今度は抜けることができます。 FreeBSD や Solaris では、端末を持たないコマンド (?) をバック グラウンドで実行している場合は、素直に exit させてくれるん ですけど、AIX はそうではないようですね。 |
|
>>2634 68user お世話になります、小僧です。 早速の回答、ありがとうございました。 別に exit と logout のコマンドが 違う訳ではなかったのですね。 今後も宜しくお願い致します。 |
|
はじめまして。検索していてここに辿り着きました。よろしくお願いいたします。 SunOS 5.7 cshでファイルをテープにバックアップする時に tarでやっているのですが、ファイル数が多くなって出来なくなって しまいました(argument too long)。 echo /パス/ | xargs tar cvf としても、だめみたいです(xargsは外部コマンドでした)。 ファイル数を減らすという他に何か良い方法はないでしょうか。 お忙しいところ誠に恐縮ですが、宜しくご教示ください。 |
|
>>2636 Yasuo Y > echo /パス/ | xargs tar cvf > としても、だめみたいです(xargsは外部コマンドでした)。 xargs tar cvf /dev/XXX ですよね? で、「だめ」とはどういう意味ですか? 少なくとも Argument too long は 出ないはずですが。 ただしこの場合、 % tar cvf /dev/XXX file1 file2 file3 .... % tar cvf /dev/XXX file1500 file1501 file1502 .... % tar cvf /dev/XXX file4000 file4001 file4002 .... と複数回 tar が実行されますが、それでいいのですか? 解決策は tar の -I オプションじゃないかと思います。 |
|
>>2635 小僧 > 別に exit と logout のコマンドが違う訳ではなかったのですね。 違いますよ。logout はログインシェルを終了させるとき、exit は シェルを終了させるときに使います。ログインシェルというのは、 Login: Password: というような認証の直後に起動したシェルのことです。 |
|
>>2637 68user 68Userさん、ありがとうございます。 tar cvf /dev/XXX -I /パス名1 -I /パス名2 -I /パス名3 として実行してみたのですが、変な文字がコンソールにいっぱい出てきて すぐ止めました。 それから、Argument Too Longも相変わらず出ています。 せっかく教えていただいたのに解決できませんでした……。 たくさんあるファイルをテープにバックアップしている ところは、一体どうやってやっているんでしょうか?? |
|
>>2639 Yasuo Y > tar cvf /dev/XXX -I /パス名1 -I /パス名2 -I /パス名3 man tar しました? -I の意味を調べました? あと、別解としては、 % echo * | xargs tar rvf /dev/XXX かなぁ。うまくいくかどうかはわかりませんが。 |
|
はじめまして UNIXについて質問なのですが、a.txt と b.txt というファイルがあり aの中には abcdefg という内容があり bの中には hijklmn という内容があります。そこで a の中に b の内容をコピーしたいのですが、どのようにコピーしたらよいのですか、教えてください。 行のコピーの仕方ってあるんですか? |
|
>>2640 68user とりあえずうまくいってるようです。 Cシェルの実行中に出てきたエラーメッセージなのですが、 Argument Too longは、他のところで出ているもののようでした。 どうもお騒がせしました。 |
|
ども初めまして。 http://x68000.startshop.co.jp/%7E68user/cgi-bin/<script>alert("----")</script> のエラーページでいま話題のクロスサイトスクリプティングの脆弱性を確認出来ました。 たぶん、error.cgiの原因と思われます。 私も利用させてもらっていますがperlのことは分かりませんので Fixされるようお願いします。 |
|
>>2643 ある厨 なるほど。外部からの情報をちゃんとチェックしてないな。 ふむふむ。賢い |
|
File System full で、しばらくこのサーバにアクセスできない状態に なってました。 >>2643 ある厨 > のエラーページでいま話題のクロスサイトスクリプティングの脆弱性を確認出来ました。 ご指摘ありがとうございます。< > を < > に置換するようにしました。 あと、Host: ヘッダにも全く同じ脆弱性がありましたので直しました。 http://x68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/cgi-bin/error.cgi >>2641 あき いまいちやりたいことがわかりません。例をあげて説明して下さい。 |
|
はじめまして。 UNIXを始めたばかりの初心者なんですが、 あるフ゜ロク゛ラムから、その日の日付の入ったファイル名を持つファイルを 自動生成させたいのですが、 どうもうまく出来ないんです。 というのも、僕はdateの情報をcutもしくは、date +%y%m%d"などで、 その日の日付を抜き取り、変数に入れた後、 touch $[変数名] と、そんな感じでやってみたんですが、 これって、パイプを使っても変数の中に日付って入らないですよね? 出来れば、[日付入りファイル名]の作り方を教えて頂けませんか? ぜんぜん違うアプローチでその方法があるならそちらでも一向に構いませんのでm(__)m |
|
>>2646 knockout 言語は何ですか。 |
|
返答どうもです。 ksh見たいです(w |
|
返答ありがとうございます。 えっと、「echo $SHELL」と入力して、 /usr/bin/ksh と出ますので、kshですね。 すいません、こんなふざけた返答で(^^; |
|
>>2648 knockout nowdate=`date +%y%m%d` echo $nowdate と `` を使います。 パイプを使うこともできなくはありませんが、無駄に長くなります。 複数行を処理する必要がないなら `` でよいでしょう。 date +%y%m%d | while read line do echo $line done |
|
出来ました!! なるほど``ですね。 早速、ホンチャンのプログラムに組み込んできます。 ありがとうございましたm(__)m |
|
度々すいません。 えっと、さっきの返答してもらった最後の記述 date +%y%m%d | while read line do echo $line done は、何を行っているんでしょうか? 僕の解釈ではdateで表示したのを、変数lineに代入、 その後がいまいち理解が、 echo $lineは分かるんですけどね、 doとdoneを使っている意味が はっきり分からないんです。 「それぐらい調べろ」っていわれそうですが、 どうか一つ宜しくお願いします(^^; |
|
はじめまして。LINUXをはじめたばかりのものです。 c言語用FTPクライアントのプログラムを ダウンロードしたのですが、 実行方法がいまいちわかりません。 他のサイトでサーバ、クライアントのファイルは それぞれで実行すればよかったのですが、 今回の分はFTPサーバを自分で作らなければ ダメなのでしょうか? かなり初歩的な質問だと思いますが 教えてください。 |
|
リンク先があるかどうか知るにはどうすればいいですか? 具体的には他人に書き込んでもらったアドレスの、 例えばhttp://www.a.com/a/a.gifの絵があるかどうか知りたいのです。 それと、絵の大きさも知りたいです。 それで大きすぎたら表示しないようにしたいのですが。 よろしくお願いします。 |
|
はじめまして、apexと申します。 今、Cシェル(OSは、ソラリス8)で、簡単なプロセス管理ツールを作成しています。 この時、以下のことでうまく動作せず悩んでおります。 もし、おわかりになれば教えてください。 1:Cシェル内で、rootユーザになる方法。 要するに、パスワードをシェル内に記述して、コマンドラインに渡せ るかどうか? 2:awkにて、プロセスを切り出す方法 「ps -ef | grep ABC」からABCを認識させ、ABCプロセスが存在しな ければ、起動する。 この時、ps-efコマンドを実行した時の、第2パラメータが ”root”で、第9パラメータが”ABC”であるものを切り出したい。 以上、お手数ですが、よろしくお願いします。 |
|
>>2655 apex 1についてですが、 expectというコマンドがあれば、これを使ってみてはどうでしょうか。 ここにサンプルがありますね。 http://www.math.s.kobe-u.ac.jp/~kodama/tips-expect.html |
|
>>2652 knockout > doとdoneを使っている意味がはっきり分からないんです。 while 〜 do 〜 done でひとまとまりのループです。なぜループを使うかと 言うと、複数行の出力を1行ずつ取り出して処理しているからです。 >>2653 H.M > c言語用FTPクライアントのプログラムをダウンロードしたのですが、 > 実行方法がいまいちわかりません。 http://X68000.startshop.co.jp/~68user/net/c-ftp-1.html ですか? このページに書いてある通りに実行すれば、引数で指定した FTP サーバに接続しにいくはずですが…。 >>2654 田中 > 具体的には他人に書き込んでもらったアドレスの、 > 例えばhttp://www.a.com/a/a.gifの絵があるかどうか知りたいのです。 リンクチェッカやダウンローダを使います。 > それと、絵の大きさも知りたいです。 ヘッダを解析します。各種ライブラリやコマンドを使ってもいいです。 > それで大きすぎたら表示しないようにしたいのですが。 if 文で判断します。 # 環境も何もわからないと、この程度のことしか言えません。 >>2655 apex > パスワードをシェル内に記述して、コマンドラインに渡せるかどうか? できなくはないです。 >>2573 68user を参照。 が、コマンドラインからだと (端末を握っている場合、という意味) うまく いかないので、やめといた方がよいでしょう。sudo や expect を使うのが 一番いいです。 > この時、ps-efコマンドを実行した時の、第2パラメータが”root”で、 > 第9パラメータが”ABC”であるものを切り出したい。 ps -ef | awk '$2=="root" && $9=="ABC" {print}' ps -ef | awk '$2~/^root$/ && $9~/^ABC$/ {print}' あたりでしょうか。 |
|
2654番の田中です。 お答え有難うございました。 言葉足らずですいません。 perlでcgiを勉強しながら製作中です。 でもう一度、 リンク先があるかどうか知るにはどうすればいいですか? 具体的には他人に書き込んでもらったアドレスの、 例えばhttp://www.a.com/a/a.gifの絵が存在するかどうか 知りたいのです。 それと、絵の容量も知りたいです。 それで大きすぎたら表示しないようにしたいのですが。 よろしくお願いします。 |
|
>>2658 田中 > リンク先があるかどうか知るにはどうすればいいですか? wget などのダウンローダやリンクチェッカを使います。現在のサーバに それらのソフトが入っていなければインストールします。あるいは libwww などの perl モジュールをインストールするのもよいでしょう。 それもできないなら、 http://www.studyinghttp.net/Hyd_HTTP.html がお勧めです。 > それと、絵の容量も知りたいです。 「容量」とはファイルサイズのことですか? 前の質問では「大きさ」と あったので縦横のサイズかと思ったのですが。 ファイルサイズなら Content-Length ヘッダを見ます。Content-Length ヘッダが付かない場合もあるので、その際は実際にダウンロードして そのサイズを調べる)。 縦横のサイズなら、file コマンドや ImageMagick 付属の identify コマンドを使います。 % file hoge.jpg hoge.jpg: JPEG image data, JFIF standard 1.01, resolution (DPI), 72 x 72 % identify hoge.jpg hoge.jpg JPEG 25x40 DirectClass 8-bit 912b 0.0u 0:01 > それで大きすぎたら表示しないようにしたいのですが。 「表示」というのも曖昧です。一度サーバ側にダウンロードしてから 表示させるのか、あるいは <img src="..."> を出力するだけなのか。 どちらにせよ、ファイルサイズなり縦横のサイズなりを if 文で 判断すればよいでしょう。 |
|
>>2658 田中 また無駄な回答をしてしまった。 http://script.lovely.to/bbs/infolng.cgi?print+200204/02040010.txt もうこないでね。 |
|
大学でUNIXを勉強しているのですが… ただ教授の命令どおりにコマンドを入力して実行しているだけで、 何をやってて何をするためにUNIXを勉強しているのか分かりません。 大体パソコンをかまうのにも慣れてない自分は、 「この〜〜〜を、〜〜〜して」 ※〜〜〜→聞きなれない英語 といわれ続けちんぷんかんぷんです。 どうしたら上手くUNIXを学べれるのでしょうか? もしアホでも分かるお勧めの本とかあれば紹介していただきたいのですが… |
|
>>2661 しなくろ 興味がなければ学ばない。でも単位を落とさないように暗記だけする。 ってのがいいんじゃないでしょうか。興味がわかないことを勉強しても 時間の浪費にしかならないと思います。 興味はあるけどわからないって場合は…どうしたもんでしょうかねぇ。 |
|
Fixども。 設定完了しましたのでお礼まで。 |
|
はじめまして。とても参考になります。 telnetのところでWindowsではtelnetでホームページはみれないのでしょうか? |
|
>>2664 なは > telnetのところでWindowsではtelnetでホームページはみれないのでしょうか? http://x68000.startshop.co.jp/~68user/net/win-telnet.html では どうでしょうか。 と言っても Windows 2000 の telnet.exe では設定方法が違う んですけどね。 |
|
perlについてですが、無名のハッシュ又は配列のレファレンスに、配列要素を追加する方法を教えてください。ついでに配列の参照の仕方も教えもらえると有りがたいです。 以下のソースは変数を@line_0 .. 9までと変数を9個使っていますが、これを$line_{0} .. {9}と一つの変数にさせたいと思っています。 while (<IN>) { local($date) = (split /<>/)[0]; push (@{'line_'.$date},$_); } foreach (0..9) { foreach $line (@{'line_'.$_}) { print $line; } } |
|
>>2666 a-jmj ん〜、$line_{2} で 2 行目のデータが得られればいいのですか? そのとき得たいデータは日付 ($date) と行全体? |
|
説明不足ですいません。 1<>aaaa<> 1<>bbbb<> 2<>cccc<> というデータがあったとしたら、 $line_{1}[0] = '1<>aaaa<>' $line_{1}[1] = '1<>bbbb<>' $line_{2}[0] = '2<>cccc<>' といった風にしたいのですが、以下のソースではエラーが出てしまいます。 open(IN,"file"); while (<IN>) { local($date) = (split /<>/)[0]; push (@line_{$date},$_); } colse(IN); これをする目的は下のように全体のデータを何度も回転させたくないので、 データを分別しときたいのです。 open(IN,"file"); @lines = <IN>; colse(IN); foreach (0..9) { print $_; foreach $line (@lines) { my($i,$data) = split /<>/,$line; print $data if ($i == $_); } } 無名のリファレンスを使いたい理由としては、@{'line_'.$date}といった感じの変数を使いたくないのと、効率を考えたらリファレンスが使えないことです。 |
|
>>2668 a-jmj こんな感じでしょうか。 open(IN,"file"); while (<IN>){ chomp; local($date) = (split /<>/)[0]; push(@{$line_{$date}}, $_); } close(IN); foreach $date (sort keys %line_ ){ foreach (@{$line_{$date}}){ print "$_ "; } print "\n"; } 実行結果: 1<>aaaa<> 1<>bbbb<> 2<>cccc<> |
|
どうもありがとうございます。 ええそうです、求めていたのはこれです。 無名も普通のリファレンスみたいに使うのですね。 なかなかリファレンスを詳しく書いた資料がないものですね。 実際の運用には8桁の日付で、分別させているのですが、以前の方法でしたら、 use strict;を使おうにも変数名が不規則なうえ、指定してやらなければ成らな い変数が膨大な数になってしまうことが問題でした。 その他に良い分別方法があったら教えていただけたら、幸いです。 |
|
>>2670 a-jmj > その他に良い分別方法があったら教えていただけたら、幸いです。 データ構造を変えていいなら、各行に一意の番号を付けて $data{123}{DATE} = '20020101'; $data{123}{NAME} = 'hoge'; $data{123}{MAIL} = 'foo@bar'; などとするのが好みです。 データ構造を現行のままにするなら案の通り $data{20020101}[0] = '1<>aaaa<>' とするのも悪くないでしょう。 あるいは最初に <> を解析しておいて $data{20020101}[1]->{NAME} といった形でアクセスできるようにするという手もあります。以下サンプル。 my %data; open(IN,"file"); while (<IN>){ chomp; my ($date,$name,$mail,$content) = split /<>/; my %hash; $hash{NAME}=$name; $hash{MAIL}=$mail; $hash{CONTENT}=$content; push(@{$data{$date}}, \%hash); } close(IN); foreach $date (sort keys %data ){ print "$date: "; foreach my $ref_hash (@{$data{$date}}){ print "$ref_hash->{NAME} $ref_hash->{MAIL} $ref_hash->{CONTENT} "; } print "\n"; } print "おまけ: $data{20020101}[1]->{NAME}\n"; データファイルの内容: 20020101<>名前1<>メールアドレス1<>発言内容1 20020101<>名前2<>メールアドレス2<>発言内容2 20030203<>名前3<>メールアドレス3<>発言内容3 実行結果: 20020101: 名前1 メールアドレス1 発言内容1 名前2 メールアドレス2 発言内容2 20030203: 名前3 メールアドレス3 発言内容3 おまけ: 発言内容2 ただし、perl でちょっと凝ったリファレンスを使い出すと、とてつもなく ソースが汚くなるので、クラスを使いたくなるかもしれません。そして クラスを使い出すと、perl の OO に嫌気がさして ruby を使い出すかも しれません。 なので、ほどほどのところでやめておく方がいいのかも。 |
|
始めまして。C-CGI システム構築をHTMLのタグレベルで実現するツール の紹介ページが shino.server-club,net/index.htm にあります。皆様の 御参考になればとCMまがいの書き込みを致しました。 |
|
>>2672 Shino こんなもので金が取れると思ってるの?? なんか最初からあやしげな臭いがプンプンしてたけど、やっぱり。。 http://shino.server-club.net/cgi-bin/DS.cgi?COMMAND=Html&HTML=../../../../../../../etc/passwd 注:Referer。 汚染チェックしてね。 |
|
名無しさん様、大変失礼を致しました。 |
|
おひさしぶりですみません。質問です。 よく、インターネット(Web、メール)で (いわゆる)半角カナを使ってはいけないといわれますが、 この理由が、 ・インターネットは ASCII 以来、7ビットしか通さない伝送路が 使われてきたので、7ビットコードを使うのが望ましい ・日本の場合 ISO-2022-JP が標準 ・ISO-2022-JP は、4つの面に(いわゆる)半角カナ以外の コードが割り当てられている。 ・つまり、ISO-2022-JP には半角カナが「ない」 ・ないものは使ってはいけない という風に覚えていましたが、 UNIX の mule や Windows の xyzzy で ISO-2022-JP を指定して (いわゆる)半角カナを入れるときの、 「ESC)I がエスケープシーケンスで(いわゆる)半角カナ」 というコード系は、何に規定されているものなのでしょうか。 こんなの、ちょっと調べろよって話だと思うんですが、 調べ方が悪いのかこれだ、という情報に当りません、、。 |
|
>>2675 ふくし > 「ESC)I がエスケープシーケンスで(いわゆる)半角カナ」 > というコード系は、何に規定されているものなのでしょうか。 何にっていうのは、どの規格で定められているかってことですよね。 http://www2d.biglobe.ne.jp/~msyk/charcode/jisx0201kana/ には JUNET方式のエンコーディング方式を素直に拡張すれば、この エンコーディング方式になる。 とありますが、何をどう素直に拡張すればこうなるのか (僕の知識 不足のため) 理解できません。 http://www.kanzaki.com/docs/jis-mail.html には RFC1468には記載されていませんが、定義からESC ( I が7ビットの カタカナを指示(designate)するエスケープシーケンスとなるので、 とありますが、どこをどう読めば ESC ( I が 7bit カタカナを指示する ことになるのか これまた (僕の知識不足のため) 理解できません。 わかったら僕にも教えて下さい。 |
|
>>2675 ふくし > よく、インターネット(Web、メール)で(いわゆる)半角カナを > 使ってはいけないといわれますが、 おっと、見逃してた。ここで「web」を挙げているのは誤りです。 インターネット (≒ TCP/IP) は 8bit を通します。FTP も HTTP も 8bit through です。過去 7bit しか通さない実装が多かったのは SMTP で、7bit しか通らないところに日本語を通そうという苦肉の 策が、後の ISO-2022-JP につながる JUNET コードです。 よって、web で半角カナ使用禁止という話はありません。もちろん web で Content-type: text/html; charset=ISO-2022-JP としているならば半角カナは使えませんけれども。 ちなみに、個人的には半角カナは嫌いでしたが、2ch で AA を見てると、まぁ 半角カナもいいかなと思い始めていました。が、半角カナは EUC-JP と Shift_JIS でバイト長が違うため、項目長を事前に決めておかなければ ならない DB では何かとトラブルの元です。よって、やっぱり半角カナ 嫌いに戻ってしまいました。 |
|
そっかー。68user さんもわからないと聞いて 少なくともつまんない質問ではなかったとわかって なんかホッとしました(^o^) マルチポストになりますが、別所で聞き、なにかわかったら また書きます。ありがとうございます。 他の方も、なにかありましたらご教示ください。 |
|
>>2675 ふくし >>2676 68user お久しぶりです。 http://euc.jp/i18n/charcode.ja.html によると、 >終端文字と文字集合の対応は登録制になっており、 ECMAという組織が登録簿を管理して います。 (略) >・94文字集合 (略) >I > JIS X 0201カタカナ >J > JIS X 0201ローマ文字 とあります。 先にECMAが決めたのか、誰かが既に決めたのをECMAが登録したのかは、 わかりませんが。 |
|
>>2679 へにか なるほどなるほど。 http://www.ecma.ch/ecma1/STAND/STANDARD.HTM のどれかにその記述があるのでしょうか。PDF しかないようなので 中身は見ていませんけれども。 ちなみに G0 とかロッキングシフトなども理解してないんですが (どこの 解説を読んでもよくわからん)、初心者向けの解説がどこかにないもので しょうか。 |
|
へにかさん、ありがとうございます。 わたしも xyzzy ユーザーズMLで質問を投げました。 いまメーラーが使えないので、記憶でサマリーすると、 ・ふくしが ISO-2022-JP の4つの面にそれぞれ半角カナ以外の コードが入っていると思っているのはカン違いで、 ISO-2022-JP は G0 集合だけを使い、エスケープシーケンスで 切り替えて使う(G1〜G3 は使用禁止) ・そこに割り当てられるコードが (RFC 1468 より引用) > Esc Seq Character Set ISOREG > ESC ( B ASCII 6 > ESC ( J JIS X 0201-1976 ("Roman" set) 14 > ESC $ @ JIS X 0208-1978 42 > ESC $ B JIS X 0208-1983 87 の4種類で、7ビットカナ(JIS X201 の右半分)は 意図的にはずされている ・JIS X201 のコード表と、終端記号の I は、 へにかさんも書いておられますが ISO の登録簿にある。 http://www.itscj.ipsj.or.jp/ISO-IR/ で登録されているものは確認できる。 ・登録を行う=>終端記号が割り当ててもらえる、 という流れで、登録作業は ISO/IEC JTC1/SC2 の事務国である日本(!) ということだそうです。 ESC(I の歴史は ISO-2022-JP より古く、 ISO-2022 のフルセットを使えば半角カナが使えるように (だと思うんですが、、) 定義されているようです。 他にもいくつか ISO-2022-JP の半角カナ拡張はありますが (G1 集合に半角カナがあるとみなして、 往年の ISO 646 のように SI/SO で切り替えたり。 これは Microsoft Internet Mail 方式?) ・G0 のみしか使わない ・ISO の登録簿にあるコード表と終端文字を使う という点で、最も正当で自然な方法と ESC(I 式が みなされているそうです。 で、推奨される文献としては http://euc.jp/i18n/charcode.ja.html#chap4 が上げられていました。 xyzzy の ML はアーカイヴが公開されているので、 教えてくださった方との実際のやりとりはそこで読めると思います。 いかがでしょうか。 こんなところでぼくは満足ですが、、。 で、2ch の AA ってなんですか?(^^) |
|
もう、だめ・・・ CPU使用率の確認でsar -vってのあるんだけど、そのなかの file-szはシステムファイルテーブルの現在サイズ、および最大サイズ ってとこまではわかってるんですけど、 システムファイルテーブルって何を管理してるテーブルなの? だれかおしえて・・・ システムファイルだよっていうのは無しで。 |
|
>>2680 68user あいにく、僕もpdf-readerを持っていないので、代わりに以下の文書を見つけました。 http://www.io.com/~kazushi/encoding/cslist.html http://homepage1.nifty.com/emk/halfkana.html http://web.kyoto-inet.or.jp/people/tomoko-y/biwa/wnn/iso2022.html >最新のエスケープシーケンス一覧と、それに対応する各文字集合表は、 >ECMA から直接、入手可能である。スイス連邦にあるECMA の連絡先は、以下の >とおりである。 > > メールアドレス:helpdesk@ecma.ch > >住所: ECMA RUE DU RHONE 114 > CH-1204 GENEVE SUISSE また、僕は全部読んでないし、また、僕が理解できるかどうかは怪しいですが、 http://euc.jp/i18n/charcode.ja.html よりも良さそうな解説は、あいにくながら、見たことありません。 >>2681 ふくし 記憶に頼っているとはいえ、見事な纏めですね。あとでxyzzyのメーリングリスト、 あさってみますね。 |
|
>>2681 ふくし > で、2ch の AA ってなんですか?(^^) こんなのです。 http://members.tripod.co.jp/maruheso/aadic/ Ascii Art と言っても、全然 Ascii じゃないですけど。 >>2682 ぐっさん > システムファイルテーブルって何を管理してるテーブルなの? その時点で使用 (open) している i-node の数、じゃなかった でしょうか。違ったっけ。 |
|
はじめまして、サトと申します。 unixについて知識のある方、お助け下さい。。 会社のunixサーバを壊してしまいました。。 とある理由で、/usr/lib/libdl.so.1 が何者かも知らずに mv libdl.so.1 libdl.so.1.org などと実施してしまいました。 (osパッチを当てた後くらいから、コンパイルのリンクエラー でlibdl.so.1うんぬんと出てきたので、このライブラリだけ旧版に 戻してもみうと思って行ってしまいました。。) そしたら、それ以後のユーザーコマンドが一切実行できなくなりました。。 ユーザーコマンドのほとんどが libdl.soをリンクしていたようです。 よって、mvで戻そうとしてもmvもcpも起動できなくなって戻せない状態です。。 OSの再インストールを覚悟していますが、この状態で何か対処方法は ありますでしょうか? どなたかお助け下さい。。よろしくお願いします。。。 |
|
>>2685 サト OS は何ですか? 「UNIX」と言ってもいろいろありますので。 Solaris ならこんな感じで。 http://www.google.com/search?q=solaris+%95%9C%8B%8C+CD-ROM+mount&hl=ja また、HDD を別の UNIX マシンにつないで、適当な場所 (/hoge とか) に mount して、 # mv /hoge/lib/libdl.so.1.org /hoge/lib/libdl.so.1 などとする手もあります。 |
|
>>2686 68user 68user様、レス大変ありがとうございます。 どうにもならないのかと思っていたので、少し安心しましたです。 昨日から相当凹んでましたので。。 OSはソラリスで、マシンはSUNウルトラだっと思います。 (ソフト開発専門なのでマシン環境などはうとくて。。) 週明けにマシン環境の担当と相談してみます。 ありがとうございました。 |
|
HP−UNIXでman sarを実行したところオプションvのところで ”text-sz (該当しません)”となっていましたがtext-szは もともと何の監視のためにあったのか知ってたら教えてください。 |
|
お世話になります。トータルで3回目の質問になるのですが、 perl で例えば <>aa<>bb<>cc<>dd<> ←1行目 ee<>ff<>gg ←2行目 このようなデータがあった場合 <>aa <>bb <>cc <>dd <>ee <>ff <>gg のように出力させるコードを教えてください。 よろしくお願いします。 |
|
<> が区切り文字だと事前にわかっていれば、 chomp で改行を除き、 <> で split して、<> を改めて付加して出力、ですね。 通常のフィルターの書き方はわかりますか? chomp、split の使い方は man perlfunc か、 ラクダの本を見てください。 (どっかで日本語の man perl が公開されてたな) <>が区切り文字だとわかっていなければ、無理だと思います。 というのは、たとえば 1 行目で、<> が区切りなのか、 <>a なのか、<>aa なのか、機械には不明だからです。 |
|
以下はどうでしょうか? #!/usr/local/bin/perl my(@array) = ( "<>aa<>bb<>cc<>dd<>", "ee<>ff<>gg" ); foreach $aref ( @array ) { $str .= $aref; } $str =~ s/\</\n\</g; $str =~ s[ ^\n ]{}gsx; print "$str\n"; |
|
ふくしさん、aaaさん、 お二人のコードを参考にして解決できました。 ありがとうございました。 |
|
>>2691 aaa これはちょっと参考になりませんねぇ。。(aaaさんゴメン) ちょっと間違ってます。 ("[*1]<>aa<>bb<>cc<>dd<>[*2]", "[*3]ee<>ff<>gg" 与えられた配列の、*1〜3の所に項目が一つ増えただけで思ったようには動かないと思う。。 1つの変数にぶち込んだ時点で、*2 *3の区別ができなくなる。 そして、 $str =~ s[ ^\n ]{}gsx; ですが、、^\nでマッチするところは、s(単一行として扱う)が付いてるから、頭の所("\n<>aa...")の\nが取れるだけだし、、gを付ける必要は無い ここでまた一つ問題がある。。多分、motoさんの発言を見ると、*1の部分にも項目が来ると思われる。。"xx<>aa<>bb..." そうすると、1行目に<>が入らず、、 xx <>aa ... ってなる。。。 あともう一つ。@arrayは配列だって分かるから括弧を付ける必要は無い my @array = (...)こんな感じ |
|
自分で書いてみた。 my @target = ("<>aa<>bb<>cc<>dd<>", "ee<>ff<>gg"); my @result = map { my @tmp = split(/<>/); shift(@tmp) if $tmp[0] eq ''; @tmp; } @target; foreach (@result) { print "<>$_\n"; } |
|
HP-UNIXで過去の日付を表示させる方法しりませんか? ちなみにenv TZ=JST-9 dateでは1日分しかさかのぼれないので、 他の方法で知っている人がいれば教えてください。 |
|
>>2695 G shellutils で GNU 版 date をインストールするか、perl で localtime(time()-60*60*24) などとするのがお手軽なんじゃないでしょうか。 |
|
>>2696 68user 返答ありがとうございます。 なにぶん初心者なもので、アドバイスの意味があまりわからないの ですが、これから調べてやってみようと思います。 会社の環境ゆえ、インストールはできないのでperlの方を参考に させていただきます。自力でわからなかったときはまた、よろしく お願いいたします。 |
|
>>2689-2694 〜嫌がらせ編〜 「暗黙の初期化? 怖いけどイイ!」 while (length($a = substr("<>aa<>bb<>cc<>dd<>" . "ee<>ff<>gg", $b++, 1))) { uc($a) ne $a && length($c .= $a) == 2 && print "<>$c\n", $c = '' } 〜お気楽編〜 「パターンマッチマンセー!」 $a = "<>aa<>bb<>cc<>dd<>" . "ee<>ff<>gg"; while ($a =~ /(\w\w)/g && print "<>$1\n"){} 〜メモリ倹約編〜 「入力元即処理!」 (push @x, "<>aa<>bb<>cc<>dd<>"), push @x, "ee<>ff<>gg"; map {while ($_ =~ /(\w\w)/g && print "<>$1\n") {}} @x; #またはファイルから読み込む場合 while (<FILEHANDLE>) {while ($_ =~ /(\w\w)/g && print "<>$1\n") {}} |
|
よく拝見すると"Perl"とは入ってないですね 笑 >UNIX、CGI、ネットワーク、Java Servlet についての掲示板 |
|
はじめまして HTTPプロトコルを利用したファイル転送について教えて下さい。 私はグラフィックデザインに関わっているので、インターネットを介して 画像や映像など比較的大きなデータを日常的にやり取りしています。 今は、ICQやMSNメッセンジャーのファイル転送を利用しているのですが 相手のファイアーウォールやルーターの設定から接続出来ない事もあります。 また接続が切れてしまった場合、続きから再開できるレジューム機能についても解説して戴けないでしょうか? 宜しくお願いします。 |
|
はじめまして。石田と申します。 ★件名★「UNIXの部屋」公開ありがとうございます。 *現在、私はlinux(Unix)のシェルプログラミングを勉強中です。 *ところが、manコマンドでは全然分からないので、 GoogleやMLアーカイブ検索して調べていましたが、 *こちらのUNIXの部屋は非常に分かりやすく参考になります。 *分かりやすいポイントは、 1)パラメータの意味が日本語で分かりやすく書いてある 2)具体例がメッセージなど併せて書いてある。 ところが非常に分かりやすいです。 *私が今作っているスクリプトは 1)redhatのupdateのFTPサイトと自分のpcの rpmパッケージリストを持って来て、マッチングして、 2)不足分のファイル一覧を作成 この中から必要なファイルをFTPでダウンロード *とにかく、パッケージのアップデートは手間がかかるので、 なるべく自動化しようと思っています。 * これからも「UNIXの部屋」がんばってください。 |
|
>>2699 KL > よく拝見すると"Perl"とは入ってないですね 笑 もちろん Perl は UNIX であります (^^ >>2700 パルテノ > 続きから再開できるレジューム機能 HTTP にはレジュームのような高級な機能はありません。二回目以降の 接続時に、単にデータの開始バイトを指定しているだけです。 接続が切れた場合は、ローカルに落したファイルサイズを見て、 たとえば 1000バイトまでダウンロードできているなら GET / HTTP/1.0 Range: bytes=1000- とします (ファイル先頭は 0 バイト目)。 http://www.studyinghttp.net/rfc_ja/2616/sec14.html#sec14.35 >>2701 石田安弘 > *こちらのUNIXの部屋は非常に分かりやすく参考になります。 ありがとうございます。改善点などありましたら指摘して下さい。 |
|
はじめまして、くろうです C言語初心者がいきなりソケットプログラムを作っているのですが どんな本を見ても、いまいちわからないことがあるので質問します。 UNIXで最大1Mハ゛イトの可変ファイルをソケットで受信しているのですが ソケットで受信する時、recvのバッファーのサイズはどのくらいとるのが適正値なのでしょう。 char buf[4096]; rtncd = recv(sockid,buf,sizeof(buf),0); 受信したテ゛ータは連結編集してます。 よろしくおねがいします。 |
|
>>2703 くろう 100 バイト単位で値を変えて、転送速度を計りましょう。 それが面倒なら 4096 でいいんじゃないでしょうか。 # 僕は面倒なので 4096。 |
|
皆さんはじめまして。ゆくまといいます。 いつも「UNIXの部屋」を活用させて頂いております。 現在、UNIXの*について調べているのですが、 もしご存知の方がいらっしゃったら教えていただけますでしょうか? たとえば、 >ls file01.dat file02.dat >cat * としたとき、catの表示順は必ず、 file01.dat の次に file02.dat である(つまりソート順)、と決まっているのでしょうか? もしくは不定なのでしょうか。 よろしくお願いいたします。 |
|
>>2705 ゆくま > file01.dat の次に file02.dat である(つまりソート順)、 > と決まっているのでしょうか? はい、ソートされます。sh・csh・tcsh・bash・zsh・ksh など全てのシェルでソートされるはずです。 ただし cat *2* *1* だと file02.dat file01.dat の 順になります。 |
|
>>2706 68user レスありがとうございます。 これってやはり考えるまでも無い当たり前のことなんですかね。 これまで何年かUNIXを使ってきて、そうだとは思っていた のですが、改めて調べてみたところ、そのことを明記している ようなドキュメントを見つけることができなかったのです。 おそらく何らかのパブリックなドキュメントには明記してある ことだとは思うのですが。。。 ご存知の方はいらっしゃいますでしょうか? |
|
>2707 > おそらく何らかのパブリックなドキュメントには明記してある > ことだとは思うのですが。。。 手元にあるマニュアルを調べてみました。 FreeBSD 4.5-RELEASE の tcsh(1) ファイル名置換 単語が `*', `?', `[', `{' のいずれかの文字を含む場合、また は 先頭が `~' で始まる場合、その単語はファイル名置換 (ある いはグロブ (globbing) と呼ばれます) の候補になります。この ような単語をパターン (グロブパターン) と見なし、そのパター ンにマッチするファイル名のリストをアルファベット順で整列し たもので置き換えます。 FreeBSD 4.5-RELEASE の csh(1) ・・・発見できず Solaris2.6 の sh(1) [ファイル名の生成] コマンド実行に先立ち、各コマンドワードは、 *、?、および [ を 含んでいないかチェックされます。これらの文字のいずれかがある と、そのワードはパターンとみなされます。このワードは、パター ンと一致する、辞書編集方式の順にソートされたファイル名に置換 されます。 Solaris2.6 の csh(1) ・・・発見できず bash-2.0.5a Pathname Expansion After word splitting, unless the -f option has been set, bash scans each word for the characters *, ?, and [. If one of these characters appears, then the word is regarded as a pattern, and replaced with an alphabetically sorted list of file names matching the pattern. |
|
>>2708 68user > FreeBSD 4.5-RELEASE の csh(1) ・・・発見できず FreeBSD 4.5-RELEASE の sh(1) ・・・発見できず の間違いです。 |
|
>2708 >手元にあるマニュアルを調べてみました。 わざわざありがとうございます。 なるほど!灯台下暗しでした(申し訳有りません、、、)。 ちなみにこちらの手元も調べてみましたところ、 Solaris7 のcsh(1) [ファイル名置換] *、?、[、または { のうちのいずれかの文字を含むクォートされ てい な い ワード、または ~ で始まるワードは、以下のように アルファベット順にソートされたファイル名のリストに展開 (グ ロビングとも呼ばれる) されます。 とありました。 お手数をおかけしました。 助かりました! |
|
>2710 追記です。 当方のSolaris2.6のcsh(1)にもSolaris7と同じ表記が見つかりました。 ということは、68userさんの環境と異なるのでしょうか? |
|
HP-UXのawkコマンドのパターン指定ではシェル変数は使えないのでしょうか?下記のような条件で、いろいろ形を変えて試して見たのですがまったくうまくいきません。分かる方教えてください。 例:awk '$1<=${hensuu}{print $0}' file.txt ※${hensuu}=1,2,3,4,5・・・・・・ |
|
>>2711 ゆくま > 当方のSolaris2.6のcsh(1)にもSolaris7と同じ表記が見つかりました。 こちらの Solaris2.6 にも同じ記述がありました。流し読みしたので 見逃していたようです。 >>2712 G シェル変数は、シェルのための変数であって、シェル以外からはどうやっても 参照できません。よって、 % env MAX=123 awk '$1<=ENVIRON["MAX"]{print $0}' file.txt などと環境変数を使うか、 % awk -v max=123 '$1<=max {print $0}' file.txt で変数を指定しましょう。 |
|
>>2713 68user ありがとうございました。教えていただいたコマンドで上手くいきました。 |
|
こんにちは、時々見させてもらってます PerlでIO::Socketを使っているのですが、 HTTPのPersistent connectionの様な、「サーバーから一旦データが 送られてきた後のコネクションは維持しつつも無通信な状態」 といった状態をプログラム側で判別できずに困ってます この間にsysreadなどを使うとデータが送られてこないためずっと 待ってしまいますので… IO:Selectのcan_read($timeout)も試してみたのですが、 この様な状態ではしっかりとソケット識別子を返してしまう みたいで結果としてsysreadの所に行ってしまってそこで止まってしまう 様な感じでした。 何か良い知恵はないでしょうか?? まあHTTPならcontent-lengthを見て1オブジェクトの受信の終わりを判別すれば良いんでしょうけど… |
|
>>2715 STP > この様な状態ではしっかりとソケット識別子を返してしまうみたいで ということはないと思いますが、問題が発生する最小限の プログラムを見せていただければ何かわかるかもしれません。 # あと、OS や perl のバージョンなども。 |
|
こんにちは、時々見させてもらってます。 PerlでHTTPSクライアントを作成したいのですが サンプルありますでしょうか |
|
>>2717 よー LWP? |
|
>>2717 よー 何をどう書いたのか全く覚えていませんが、LWP と Crypt-SSLeay で できるようです。 >>1848 d-jiro >>1849 68user >>1854 d-jiro >>1855 68user |
|
Socketを用いたPerlでHTTPSクライアントのサンプルは ありませんか? |
|
>>2720 よー http://www.thomas-fahle.de/pub/perl/LWP/HTTP/HTTP_Get.html#https |
|
68userさん,こんにちは. 失礼ながらご連絡事項をこちらでお伝えします. このサーバーがポートスキャンの踏み台にされたそうです. カーネルも古いし本格的な対策は無理だと思いますが そちらでできる対策があれば試していただけませんか. > 早速ですが、サンライズシステムズ 様の配下にある > 210.249.139.22 というホストから > ポートスキャンが行われた模様との連絡が入りました。 連絡経路はTTCNパワードコムの鎌田さん->両毛の新堀さん->私の順です. |
|
実は5/30に胆嚢摘出の手術を受けまして,入院中なのです. 動くに動けない感じで,今も看護婦の目を盗んで携帯でつないでいます. 何かありましたらお気軽にメールください. |
|
>>2722 Netboy 現在対応中です。ひととおり終わりましたら作業項目を書き 込みます (メールの方がよろしければメールします)。 > 実は5/30に胆嚢摘出の手術を受けまして,入院中なのです. 大変ですね。御大事に…。 |
|
>>2722 Netboy メール送りました。 |
|
ただ今再起動しました |
|
利用者の方へ。 サーバを置いてあるところの管理者の方が、2002/06/02 にマシンの 電源を落とされたため、しばらくアクセスできない状態になっていました。 |
|
PerlでのFTP接続を行いファイル転送をしたいのですがうまくいかず 困ってます。 $proto = getprotobyname('tcp'); $port = getservbyname('ftp', 'tcp'); $iaddr = inet_aton($hostname) or die "$hostnameのアドレス取得失敗"; $paddr = pack_sockaddr_in($port,$iaddr); socket(SOCKET,PF_INET,SOCK_STREAM,$proto) or die "socket失敗"; connect(SOCKET, $paddr) or die "connect失敗"; # ファイルハンドル COMMAND をバッファリングしない select(SOCKET); $|=1; select(STDOUT); #---------- ユーザ認証 ---------------------- print SOCKET "USER $username\r\n"; print SOCKET "PASS $password\r\n"; #------------------------------------------ と、ユーザー認証まではいけるでのすがその後で エラーとなってしまいます。 ちなみにユーザーとパスともにあっているはずなんですが・・・。 情報不足かと思いますが何か思い当たることがありましたら 指導のほどお願いいたします。 |
|
↓のNo.2728の件です。 接続まで何とかできたのですがファイルをアップロードしたいのですが どのようにすればいいのかわからなくて・・・。 教えていただけませんか?? |
|
>>2729 yun 2729 は 2728 の補足ですか? それとも 2728 の件は解決したのですか? エラーが出るのですか? やり方がわからなくて先に進めないのですか? |
|
接続後のPUTの仕方がわからないので先にすすめないんです。 ん〜情報が少なくて申し訳ないです。 何かわかることがありましたらお願いします。 |
|
いつも唐突な知るもんですいません。 「日本語情報処理」という本を読んでいたら、 EUC を内部コードとして使うコンピューター(?)か ソフトウェア(?)として 「焼き獣ホスト(YKH)」というのが出てきたんですが、 焼き獣ホストで Google しても見つかりません。 これ、何かご存知の方はいらっしゃいますか? |
|
>>2731 yun > 接続後のPUTの仕方がわからないので先にすすめないんです。 http://X68000.startshop.co.jp/~68user/net/ftp-1.html を読んでください。 >>2732 ふくし >「焼き獣ホスト(YKH)」 これですかね。端末エミュレータみたいですね。 http://www.geocities.com/Tokyo/Flats/7725/view_info.htm YKH is a small application of this kind, that emulates Japanese VT-320 terminal under MS-DOS and is freely distributed under the terms of the GNU general public licence |
|
はじめまして。リュウと申します。 初心者で申し訳ないのですが、質問があります。 HP9000にHP-UX11.0のコールドインストールをしているのですが、 毎回リブート後にメニューが出るようになってしまいました。 メニューを出さずに通常に内蔵ディスクから起動されるようにするには、 どのようにしたらいいでしょうか? あと、 Interact with IPL?> で、'Y'を押して IPL> から抜け出せなくなってしまいました。 exit,quitともダメです。。。 あわせてよろしくお願いします。 乱文で申し訳ございません。 |
|
ほんとに初心者です、おしえてください 課題でechoサーバ及び、クライアントのプログラムをC言語とPerlで作成する。というのがでたのですが、echoサーバはこのHPでプログラムが掲載してあるのでなんとか自分でやってみようと思うのですが、この場合のクライアントとはどのようなプログラムになるのでしょうか? よろしければおしえてください。 宜しくおねがいします。 |
|
もう一つ質問なのですが。 課題2 ・chargenサーバ及び、クライアントのプログラムをC言語とPerlで作成する。 フリーなUnix系OSで動作する事。 chargenサーバはデーモンとして動作する事。 chargenサーバは、標準telnetコマンドとも通信可能な事。 chargenサーバは、ログ機能を有する事。 chargenクライアントは通信先がchargenサーバと判明した時点で通信を終了させる 事。 という課題もでています。初心者の僕にはまったく課題の意味がわかりません。どなたかおしえてくれないでしょうか?たびたびすいません。宜しくお願いします。 |
|
>>2734 リュウ せっかく「Interact with IPL」というキーワードがわかっているのですから、 それで検索しましょう。ついでにキーワードに「HP-UX」も付けておきましょう。 そしたら一発でひっかかります。 http://www.google.com/search?hl=ja&q=Interact+with+IPL+HP-UX&lr=lang_ja >>2735 だいすけ > この場合のクライアントとはどのようなプログラムになるのでしょうか? http://X68000.startshop.co.jp/~68user/net/sample/http-client.pl をちょっといじれば、echo クライアントになります。 >>2736 だいすけ chargen については RFC864 をどうぞ。 http://www.goto.info.kanagawa-u.ac.jp/~horiyuki/rfc/rfc864j.txt その他の疑問点については、まず基本となる雛型を作ってみてから、ですね。 |
|
たびたびすいません。このような課題のクライアントのことなのですが? どのようなプログラムになるのでしょうか? echoサーバ及び、クライアントのプログラムをC言語とPerlで作成する。 フリーなUnix系OSで動作する事。 echoサーバはデーモンとして動作する事。 echoサーバは、標準telnetコマンドとも通信可能な事。 echoサーバは、ログ機能を有する事。 以上は必須機能です。 余裕があれば、 サーバには大文字、小文字変換機能をオプションで持たせる。 クライアントは文字列をファイルから読み取り、送信するオプションを付ける。 等、面白い機能を付加して下さい。 |
|
ほんとうに初心者なのでchargenについてはプログラムを書き始めることもできません。どうかたすけてください。 |
|
仕組みやプログラムを理解する手助けならできますが、答えをそのままあげる ことはできません (おもしろくないから)。 宿題スレなら、誰かがソースを書いてくれるかもしれません。 http://pc.2ch.net/test/read.cgi/tech/1020785918/l50 てゆーか、高専生か大学生かと思っていたんですが、社会人なのですか? 自分なりにある程度調べた上で、 「ここまでは理解できたけど、この部分がわからないから教えてくれ」 という質問の仕方を身につけた方がよいと思いますが、まぁいらぬお節介でしょうね。 |
|
はじめまして。 UNIXのftpコマンドについて、お聞きしたいことがあります。 ftpコマンドを使用して、WinNTサーバからUNIXへデータを getしているのですが、以下の事象が発生しています。 ・対象ファイルが0バイトの時、getコマンド終了後、そのまま ftpのプロセスがハングアップしてしまうことがある。 シェル内で以下のように使用しています。 ftp -n <<EOF open [IPアドレス] user [ユーザ名] [パスワード] binary get [getするファイル名] [保存するファイル名] close quit EOF 現象を見る限り、getコマンドまでは完了してるようです。 psコマンドにて、ftpのプロセスを検索すると、 ftp -n が残ってしまっています。 UNIX側からタイマーなどでftpのセッションを切ることは可能 なのでしょうか? |
|
>>2741 バクモン それって、要は ftp か ftpd のバグですよね。 ftp -n < input & pid=$! sleep 300 if [ `ps -p $!` ]; then kill $! fi 的な監視をするのが普通でしょうか。 |
|
>>2742 68user 早速のご回答、ありがとうございます。 確かにftpプロセスの監視しかないかな、と思います。 そこで、再度質問なんですが、このftpコマンドを使用している シェルがCシェルで書かれています(すいません、先に言って おくべきでした)。 Cシェルでは直前に実行したコマンドのプロセスIDを取得する 方法はあるのでしょうか? ($!はKシェル、Bシェルのみの文法と調べたら書いてありました) |
|
echoサーバの 3: #include <stdio.h> 4: #include <netdb.h> 5: #include <sys/types.h> 6: #include <sys/socket.h> 7: #include <sys/uio.h> 8: #include <unistd.h> 9: #include <sys/param.h> 10: #include <netinet/in.h> 11: #include <arpa/inet.h> この部分なのですが、#include <stdio.h>はわかるのですが、 他の物は参考書も見ても掲載されていません。 なんなのでしょうか? |
|
昨日から、UNIXを勉強しだしました。大変、初歩的な質問かもしれないのでごめんなさい。 アクセス状態が-rw-------のファイルをmoreで表示させたいのですが、私はファイルの所有者ではないので表示させることができません。chmodは使わないでアクセスを出来るようなのですが、どうすれば良いのですか? どなたか教えてください。よろしくお願いします。 |
|
>>2745 シゲ すみません。解決しました。 パスワードが解ればrootで入れるんですね。 |
|
>>2743 バクモン > Cシェルでは直前に実行したコマンドのプロセスIDを取得する > 方法はあるのでしょうか? $status です。 >>2744 だいすけ 例えば、関数 listen を使いたい場合は、man listen として、 include すべきファイルを調べます.同様に accept や bind など、 使用している関数全てについて調べていくと、それだけのファイルを include する必要がある、ということです。 |
|
ここのサイトのC言語のHTTPクライアントを使わせてもらって色々勉強させてもらってます。そこで質問なのですが、imodeのURL例えば(http://mobile.yahoo.co.jp/)のレスポンスが返ってくるプログラムを作ろうとしているのですが、どうも、302 FOUND がでてしまい、うまくいきません。どのように解決したらよいでしょうか? |
|
>>2748 木場 Locaiton: ヘッダに示されている URL を読み込めばよいです。 |
|
前回のことについての質問のつづきですが 僕のもっている参考書には掲載されてないのですが、 僕のもっている参考書が古いということでしょうか? |
|
>>2747 68user ご回答ありがとうございます。 ただ、$statusは直前のコマンドのリターン値がセットされる と認識しています。 Cシェルで直前のプロセスIDを取得するには、プロセスをバック グラウンドで動かすようにして、その際に標準出力されるプロセス IDをテキストファイルにおとして、grepなりをする方法しか ないかな、と考えています。 そこで、以下を考えました。 ftp -n <<EOF & open [IPアドレス] user [ユーザ名] [パスワード] binary get [getするファイル名] [保存するファイル名] close quit EOF これを実行すると [1] 10161 と言った形でプロセスIDが出力されます。 ただ、これをテキストファイルに落とす方法がわかりません。 多分、リダイレクトをするのだと思っているのですが、どこに それをうめこめばいいのでしょうか? |
|
それとも C言語で新しくできた関数なのでしょうか? |
|
>>2751 バクモン ああ、そういう意味ですか。 tcsh だと $! で取れますが、csh では無理かもしれないですね。 jobs -l だと取れそうですが、どうでしょうか。 ただ、僕なら監視用プロセスを別に起こします。 例えば、 mkdir /tmp/.ftp-lock ftp -n <<EOF open .. quit EOF rmdir /tmp/.ftp-lock として、監視プロセスは n 秒前より過去に /tmp/.ftp-lock が作成されて いたら、 kill `ps -ef | grep get-file.sh | grep -v grep' する、とか。 もちっと確実にするなら ln -s $$ /tmp/.ftp-pid ftp -n <<EOF open としてプロセス番号を特定できるようにする方法もあります ($$ は sh の プロセス番号なので、$$ の子プロセスを kill する必要がありますけど)。 >>2750 だいすけ 「何が」参考書に掲載されていないのですか? netdb.h? listen? accept? ここらへんの関数については規格化されていません。よって、UNIX では 使えても Windows では関数そのものがなかったりします。 例えば 「ANSI C マニュアル」 といった書名ならば、規格化された関数については網羅しているかもしれませんが、 規格外の関数については載っていなくても不思議ではありません。 |
|
5: #include <sys/types.h> 6: #include <sys/socket.h> 7: #include <sys/uio.h> 8: #include <unistd.h> 9: #include <sys/param.h> 10: #include <netinet/in.h> 11: #include <arpa/inet.h これらが参考書に掲載されてないという意味だったのですが manコマンドでしれべていくのですね。 どうもありがとうございます。 |
|
はじめまして。 まだ、UNIXをはじめたばかりの初心者です。 いま、windows環境のマシンからtera termを使ってUNIXマシンにpostgressqlをインストールしています。そこで、「カーネルのコンフィギュレショーションファイルをチェックする」と書かれているのですが、これってどうやるのですか? どなたか教えてください。 よろしくお願いします。 |
|
>>2755 ビギナー > 「カーネルのコンフィギュレショーションファイルを > チェックする」と書かれているのですが、これって > どうやるのですか? OS によって違います。 http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/kernel-resources.html をどうぞ。 |
|
>>2756 68user ありがとうございます。 |
|
ご回答ありがとうございました。 今もちょっとわからないとこがあるのですが、 もうちょっと考えてわからなかったら、 聞きにきます。 |
|
再び質問です。 先ほどの質問と症状は似ているのですが、imodeのURLで(http://mobile.yahoo.co.jp/yahoo/index.html)のリクエストを出すと HTTP1.0 302 FOUND DATE Location http://mobile.yahoo.co.jp/error/404.html Conection: close のレスポンスが返ってきて、locationの部分を入れても実際のimodeのURLがゲットできなくて困っています。どのようにC言語のHTTPクライアント(1) のソースをいじればちゃんとしたレスポンスが得られるでしょうか? よろしくお願い致します。 |
|
初めまして黒木と申します。UNIX初心者です。 /usr/dict/words という辞書ファイルからEが2個以上出て、AとDとTがそれ ぞれ1個以上出て、最初がLで始まる単語が書かれてる行を見つけるには、 どういう1行コマンドを書けばよいでしょうか?よろしくお願いします。 (但し、文字は全て大文字・小文字を区別しない) *ファイルは何でも良いので、見つける方法が知りたいのです。 |
|
>>2759 きば > imodeのURLで(http://mobile.yahoo.co.jp/yahoo/index.html)の > リクエストを出すと ブラウザで http://mobile.yahoo.co.jp/yahoo/index.html を 見ると、404 not found になるので、 > Location http://mobile.yahoo.co.jp/error/404.html 当然そうなると思いますよ。 どこからこの URL が出てきたのでしょうか? >>2760 黒木 grep -i 'E.*E' /usr/dict/words | grep -i A | grep -i D | grep -i T | grep -i '^L' でどうでしょう。 |
|
すばやいレスありがとうございます。 http://mobile.yahoo.co.jp/yahoo/index.html ↑はimodeの使える携帯端末で見ることの出来るヤフーのカテゴリ検索のサイトです。 上記のURLのリクエストを送ったら携帯端末で見ることの出来るサイトをレスポンスしてくれるようにしたいのです。 imode専用のHTTPクライアントを68userさんのC言語のHTTPクライアント(1)を参考に作ろうと思っていて、とりあえず上記のURLで実験して作ろうと試みているのですが、なかなかうまくいかないので、68userさんの力をかして頂きたいと思う次第です。 |
|
>>2762 きば i-mode 端末のみで利用可能なページということですね? なら、 http://www.nttdocomo.co.jp/p_s/imode/tag/s2.html を参考にして、 GET /yahoo/index.html HTTP/1.0 User-Agent: DoCoMo/1.0/N209i などなど。 |
|
はい。imodeのみ利用可能なページです。 なるほど、、 urlをみてもうちょっとがんばってみます。 貴重なご意見ありがとうございます。 |
|
>>2761 68user 有難う御座いました。これで良いですね。 |
|
>>2753 68user ご回答ありがとうございます。 以下のようにロジックを変更しようかと思います。 ・ftpをバックグランドで動かす ・jobs -lの結果をテキストファイルに落とす ・5分sleepする(※1) ・grepとawkを使用して、テキストファイルからftpのプロセスIDを取得する ・ps -p にて取得したプロセスIDのプロセス生存を確認 ・ps -p のリターンコードが0以外であればkillするif文をおこなう(※2) こんな感じかな、と考えています。 怖い部分は※1,2です。 ※1:とりあえずユーザさんには現在の環境でgetが3分を越えることは ないといわれているので、安全を見て5分sleepさせるようにしたが 本当に大丈夫か? >>ユーザさんがOKと言っているので、問題なし・・・かな。 ※2:ps -p [プロセスID]でHITしなかった場合、リターンコードは必ず 0以外となる。逆にHITした場合は、必ず0となる。 >>このハンドリングは正しいのか、ちょっと自信なし。 色々とご回答ありがとうございました。 |
|
はじめまして。 私は、最近linuxを使い出した初心者です。 最近、仕事でpostgresqlをインストールしました。 インストールには成功したようなのですが、 $ pg_ctl startで起動をするとpostgresql(postmaster?)は起動します。 しかし $ postmasterでは、 DEBUG ... DEBUG ... DEBUG ... DEBUG ... と出力され、その後エラーメッセージも何も出なくて、反応が無くなってしまいます。(いつも、ctrl+cで抜けています) どうしてでしょうか? どなたかご存知の方、ご教授ください。 |
|
書き忘れていました。 バージョン:postgresql-7.11 環境:open blocksというlinuxマシンです。 (redhatでも同様でした) |
|
>>2767 ユウ > $ postmasterでは、 引数なしで実行したのですか? データベースクラスタの場所はどうやって 指定しているのですか? 環境変数 PGDATA? > DEBUG ... この ... というのは省略したのですか? 本当に ... と表示されたのですか? > その後エラーメッセージも何も出なくて、反応が無くなってしまいます。 それはフォアグラウンドで起動しているだけで、正常起動じゃないんでしょうか? http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/postmaster-start.html > サーバを起動する一番簡単な方法例は、 > postmaster -D /usr/local/pgsql/data > となり、サーバをフォアグラウンドで走らせます。 > バックグランドでpostmasterを起動する には通常のシェルの構文を使います。 また、 % sh -x pg_ctl start として、pg_ctl 内で実行される postmaster の引数を確認するのも よいでしょう。 >>2766 バクモン > ※2:ps -p [プロセスID]でHITしなかった場合、リターンコードは必ず > 0以外となる。逆にHITした場合は、必ず0となる。 > >>このハンドリングは正しいのか、ちょっと自信なし。 問題ないと思いますが、それでも心配なら % ps -p [pid] | grep スクリプト名 などなど。 |
|
はじめまして。 ネットワークプログラミングの知識を参考にさせてもらっています。 で、ひとつ作りたいプログラムがあって質問させてください。 現在PERLを利用して、TERATERMのマクロのようにプログラムの出力結果を分析して、 次のバッチの投入のような監視?ツールを作りたいと思っています。 で、ソケットをつかってポート23にアクセスしに行くのですが、 固まってしまいます。ポート80や110にはここのサイトの見本をまねて アクセスすることは出来るのですが・・・。 shでやるというのも考えられるのですが、suではパスワードを聞いてきますし、 別のアプリ実行しても制御が完全にアプリ側に移るんで無理ですよね? ポート23にアクセスして結果をやり取りするにはどうしたらよいのでしょうか? どなたかお分かりでしたらヒントをお願いします。 |
|
>>2769 68user お返事ありがとうございます。 質問の書き方が下手で、申し訳がありません。 PGDATA=/usr/local/pgsql/dataを設定していて $ postmaster は引数なしで実行しています。(pg_ctl startもそうです) DEBUG...はDEBUGのあとの出力を省略させていただきました。 UNIXに関しても、パソコンに関しても本当に初心者で、何がどうなってるのかわからない状態なのですが、長くなりますが詳しく書かせていただきます。 $pg_ctl startを実行すると postmaster successfully started と出力されたあとに DEBUG...(省略しています)と5行でて、そこでreturnキーを押下すると [postgres@AAAServer postgres]$ と次のコマンド入力が可能になります。 しかし $ postmasterを実行しても postmaster successfully started というメッセージは出ないで、 DEBUG...(省略しています)と5行でてreturnキーを押下しても [postgres@AAAServer postgres]$ とはならず、改行されるだけです。 (以上は、openblocks,redhat両方共の環境です) いろいろ試してみると、 redhat環境では、/usr/local/pgsql/data/postgresql.confに silent_mode = on tcpip_socket = on syslog = 2 と追記して $ postmasterを実行すると DEBUG...(省略します)とは出力されないで、 [postgres@AAAServer postgres]$ となり、postgresqlは起動しました。 そこで、openblocksでpostgres.confを上記のように変更して $ postmasterを実行しました。すると FATAL 1: 'silent' is not valid option name とエラーが帰ってきました。 $pg_ctl startで実行した結果も、 postmaster successfully started と出力された後に、同様のエラーが帰ってきました。 (postgres.confの変更内容のsilentをコメント化したらsilentの下に追記した、tcpip_socketで同様のエラーが起きます。) 申し訳がありませんが、ご教授ください。 |
|
お返事ありがとうございます。 質問の書き方が下手で、申し訳がありません。 PGDATA=/usr/local/pgsql/dataを設定していて $ postmaster は引数なしで実行しています。(pg_ctl startもそうです) DEBUG...はDEBUGのあとの出力を省略させていただきました。 UNIXに関しても、パソコンに関しても本当に初心者で、何がどうなってるのかわからない状態なのですが、長くなりますが詳しく書かせていただきます。 $pg_ctl startを実行すると postmaster successfully started と出力されたあとに DEBUG...(省略しています)と5行でて、そこでreturnキーを押下すると [postgres@AAAServer postgres]$ と次のコマンド入力が可能になります。 しかし $ postmasterを実行しても postmaster successfully started というメッセージは出ないで、 DEBUG...(省略しています)と5行でてreturnキーを押下しても [postgres@AAAServer postgres]$ とはならず、改行されるだけです。 (以上は、openblocks,redhat両方共の環境です) いろいろ試してみると、 redhat環境では、/usr/local/pgsql/data/postgresql.confに silent_mode = on tcpip_socket = on syslog = 2 と追記して $ postmasterを実行すると DEBUG...(省略します)とは出力されないで、 [postgres@AAAServer postgres]$ となり、postgresqlは起動しました。 そこで、openblocksでpostgres.confを上記のように変更して $ postmasterを実行しました。すると FATAL 1: 'silent' is not valid option name とエラーが帰ってきました。 $pg_ctl startで実行した結果も、 postmaster successfully started と出力された後に、同様のエラーが帰ってきました。 (postgres.confの変更内容のsilentをコメント化したらsilentの下に追記した、tcpip_socketで同様のエラーが起きます。) 申し訳がありませんが、ご教授ください。 |
|
>>2770 せと > で、ソケットをつかってポート23にアクセスしに行くのですが、 > 固まってしまいます。 要は telnet クライアントを作りたいと。 接続後、telnet プロトコルに従ってネゴシエーションをする 必要があります。詳細は http://www.faqs.org/rfcs/rfc318.html perl のモジュールを使うなら Net::Telnet がよいでしょう。 ただし、telnet クライアントができても、文字の送信/文字の 受信が可能になるだけです。エラー発生の判断などはやはり プログラム側で行わなくてはいけません。 というわけで、素直に > プログラムの出力結果を分析して、次のバッチの投入のような監視?ツール を行うスクリプトを作った方がよいでしょう。 > suではパスワードを聞いてきますし、 > 別のアプリ実行しても制御が完全にアプリ側に移るんで無理ですよね? 危惧しておられることがよくわからないのですが、普通はスクリプトなどを 書けば実現可能です。 >>2772 ユウ > $ postmasterを実行しても > postmaster successfully started > というメッセージは出ないで、 > DEBUG...(省略しています)と5行でてreturnキーを押下しても > [postgres@AAAServer postgres]$ > とはならず、改行されるだけです。 それはそれで正常です。キーの入力をそのアプリが奪うような状況を 「フォアグラウンドで動作している」と言います。逆に、アプリが 裏で動いているような状況を「バックグラウンドで動作している」 と言います。 http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/postmaster-start.html にある通り、postmaster を実行すると、単にフォアグラウンドで 動くという仕様になっているだけです。postmaster を実行した後、 別ウィンドウで psql を実行すると、ちゃんと接続できるはずです。 > $ postmasterを実行しても > postmaster successfully started > というメッセージは出ないで、 postmaster successfully started という文字列を表示をしているのは pg_ctl だからです。 postmaster をバックグラウンドで動かすには、 - postmaster & として起動する。 - postgresql.conf を修正して silent_mode=true とする。 - postmaster -S とする。 - postmaster -c silent_mode=true とする。 などの方法があります (true と on は同じ)。全てマニュアル http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/runtime-config.html に書いてあります。 > FATAL 1: 'silent' is not valid option name 'silent_mode' is ... ならわかりますが、`silent' is ... となるということは、 postgresql.conf に silent=true などと書いていませんか? > tcpip_socketで同様のエラーが起きます。 ということは、その上にある行がおかしい可能性もあります。 とにかく、まずは postgresql.conf への追加時に修正ミスをしていないかを 疑うべきでしょう。 あとは、OpenBlockS にインストールされている PostgreSQL のバージョンと RedHat にインストールされている PostgreSQL のバージョンが違うとか。 |
|
>>2773 68user ご指摘の通りでした。 silent_mode,tcpip_socketにのエラーは直りましたが、syslogでエラーが出る状態です。なぜか解らないですけど、redhatで成功しているpostgresql.confをコピーしてきます。 ありがとうございました。 |
|
初めて投稿します。Solarisでハードウェアの診断をする機能があると聞きました。旧SUN OSでは、ダイアグというそうですが、オンボードやHDDの状態を診断して、異常個所をリストアップしてくれるような機能があれば、教えてちょんまげ!何卒よろしくお願いします。 |
|
echoサーバ(C言語)でのことですが #include <sys/uio.h> #include <unistd.h> #include <sys/param.h> #include <netinet/in.h> #include <arpa/inet.h> これらがなくても正常にコンパイルできるのですが、必要なのでしょうか? |
|
ご指摘の通りでした。 silent_mode,tcpip_socketにのエラーは直りましたが、syslogでエラーが出る状態です。なぜか解らないですけど、redhatで成功しているpostgresql.confをコピーしてきます。 ありがとうございました。 |
|
#2776 >これらがなくても正常にコンパイルできるのですが、必要なのでしょうか? windowsでならば必要ないと思います。 |
|
こんばんは。 最近はお一人で回答をしておられるようでおつかれさまです >68user とかいいつつ私も質問しに来てるんですが…。 で早速ですがどなたか知恵をお貸しください。 現在P4マシン上でRedhat7.1.94を利用しており、100BASEカードを使って LAN経由でインターネットにアクセスしています。 IPはDHCPサーバから割り振られているのですが、Netscapeなど、 どうやらgethostbynameを呼んでいると思われるプログラムが 名前解決できずに困っています。 ただしnslookupやhostコマンドでは正しく名前解決できる上、 Netscape等からも数字のIPを直に打てばアクセスできています。 試しに/etc/hostsに[216.239.33.101 www.google.co.jp]を記述すると、 Netscapeからもアクセスできました。 dhcpのクライアントにはdhcpcd-1.3.18を[/sbin/dhcpcd -n eth0]で 起動していて、自ホストのIPは正しく取得できているようです。 /etc/host.confには[order hosts,bind]のみを記述しており、 resolve.confにはWin2k動作時に調べておいたLAN内DNSサーバの指定 [nameserver 192.168.0.1]を記述しています。 自分なりに無い知識をいくらかでも埋めようとgoogleで探し回ったのですが 全てに目を通すほどパワーが続きませんでした。 どうぞよろしくお願いします。 |
|
はじめまして。 あまりにも簡単な質問のようで申し訳ないのですが、 「ソケット」っていうのは、「IPアドレスとポート番号を組み合わせたもの」でしょうか? どこで読んだのか、「ポート番号とプロセスIDを組み合わせたもの」という考えが頭を離れず、 自分でもいろいろ調べたのですが、解答は見つかりませんでした。 もしかしたら見当違いな質問なのかもしれませが、 ソケットの知識をお持ちの方がおりましたら、ご教授願います。 どうぞよろしくお願い致します。 |
|
>>2779 has ども。最近会社でもやる気ゼロなので、回答なぞしてるんですわ。 もしかして Netscape を起動した後に dhcp クライアントを起動 してません? もしそうなら順番を逆にしてみるとか。 そうでないなら、tcpdump の結果を見せてくださいな。 あと、あらゆる gethostbyname が失敗してますか? % perl -e "use Socket;print inet_ntoa(inet_aton('www.jp.freebsd.org'))" もダメですか? >>2780 aozora > 「ソケット」っていうのは、「IPアドレスとポート番号を組み合わせたもの」 > でしょうか? 「IP アドレスとポート番号を組み合わせたもの」は相手を一意に特定するための 識別子で、たとえるなら電話番号です。 # ただし、それは IP の話。UNIX ドメインソケットでは、ファイルが識別子です。 「ソケット」は、通信路の端点で、たとえるなら電話機です。 これを同じものと考えてしまうと、例えば bind(2) が理解できなく なります。bind(2) はたとえるなら電話機に電話線をつなぐという 感じでしょうか。 > 「ポート番号とプロセスIDを組み合わせたもの」 違います。1プロセスから複数のソケットを使うことができますから。 |
|
初めて書き込みをします。 UNIXは、まだ初心者です。 お聞きしたい事を書き込みます。 現在、「share」コマンドでディレクトリを共有した後、「dfmount」コマンドで共有されたディレクトリにアクセス中のクライアント名を取り出そうとしています。 「dfmount」コマンドで情報が取れないのですが、どうしてなのでしょうか? 「share」の情報を書き込みます。 > /usr/sbin/share - /share rw=client "File Service" - /home rw=nini:gp7000s,root=gp7000s "File Service" - /shared rw=osl:gp7000s,root=gp7000s "File Service" > |
|
はじめて書き込みます。 UNIXの初心者シドです。 少し教えてほしいことが有ります。 知っていられる方は、お教え願えないでしょうか? 「share」コマンドを実行して、「dfmounts」コマンドを実行すると何も表示されません。なぜでしょうか? 「share」の情報と「dfmounts」コマンドを実行したときの表示部分を書きます。 > /usr/sbin/share - /share rw=client "File Service" - /home rw=nini:gp7000s,root=gp7000s "File Service" - /shared rw=osl:gp7000s,root=gp7000s "File Service" > /usr/sbin/dfmounts > |
|
UNIX初心者(パソコンも初心者です)の私にどうか教えてください。 telnetを使って、redhat環境のマシンに接続して操作をしています。 $shutdown -r now で再起動をしました。 すると、立ち上がるまでに10分以上(普通は3分ぐらいだと思う)かかり、立ち上がって普通は [ユーザ名(マシン名)カレントディレクトリ]$ と出るところで、マシン名がnone(本来はmizuho)になっていました。そして、書き込み可能(-wrxwrxwrx)のファイルを操作しようとすると、読取専用とエラーメッセージが出て操作できなくなってしまいました。(全ファイルそうです) いろいろやってみた結果、 $mount -o remount, rw /dev/hda5 / で、書き込み可能にはなりましたが、再起動をすると読み込み専用に戻ってしまいます。 (boot.log,messageを見てみましたが、snmpd shutdown failedと出ています。これって関係ありますか?) どなたか直し方を教えてください。 お願いします。 それと今、boot画面のメッセージをチェックしようとしているのですが、1行ずつ進める方法があるらしいです。これってどうやるのですか? |
|
はじめまして。 現在どうしても解決できない問題があり、書き込みました。 どなたかご存知の方いらっしゃいましたら、レスよろしくお願いします。 WEBサーバにおいてLocationヘッダで指定したURLへリダイレクトさせて、 かつリダイレクト先へのHTTPリクエストにCookieを設定したいのですが、 設定できない状態になっています。 --------------------------------------------------------- HTTP/1.1 302 Found\n Set-Cookie: test=a; domain=www.hogehoge.co.jp; path=/\n Location: http://www.hogehoge.co.jp\n\n --------------------------------------------------------- のようなレスポンスを返却するCGIを作成したのですが、上記レス ポンスを返すサーバとリダイレクト先のサーバが異なる場合、次の リクエストにCookieが付加されてきません。 Cookieを設定できるのは、自分と同じドメインのみなのでしょうか。 当たり前の事だったら申し訳ありません。 よろしくお願いします。 |
|
>>2785 うみ > Set-Cookie: test=a; domain=www.hogehoge.co.jp; path=/\n cookie で domain をセットしたことがないのでよく知りませんが、 無理なんじゃないでしょうか。これができるなら、任意のサーバの cookie を外部からセットできることになります。 http://www2.studyinghttp.net/cookies.html を見ると、 server-1.hogehoge.co.jp で Set-Cookie: test=a domain=hogehoge.co.jp という cookie を吐くと server-1.hogehoge.co.jp や server-2.hogehoge.co.jp に送り返されるようになる。 ということではないかと思います。 もし、「Location なしだとうまくいくが、Location ありだとダメ」 ということなら、上記の認識は間違っているんでしょうけど。 >>2784 シゲ > 立ち上がるまでに10分以上(普通は3分ぐらいだと思う)かかり、 このときコンソールには何が出力されていますか? 症状からすると 何かしらのエラーが発生して、Read-only で mount され、シングル ユーザモードで起動しているように見えますが、根本原因がコンソール に表示されていると思います。 >>2783 シド >>2775 レイラ 僕には全くわからない分野なので、お役に立てないようです。 |
|
>>2786 68user >> 立ち上がるまでに10分以上(普通は3分ぐらいだと思う)かかり、 > 何かしらのエラーが発生して、Read-only で mount され、シングル > ユーザモードで起動しているように見えますが あ、10分待てば起動するのなら違うのかなぁ。 > snmpd shutdown failedと出ています。これって関係ありますか? shutdown 時のエラーなので関係ないと思います (実は関係あったり するのかもしれませんけど)。 > 1行ずつ進める方法があるらしいです。 少なくとも FreeBSD では、Scroll Lock を押せばスクロールが止まり、 カーソルキーで移動できます。Linux ではどうなのかはわかりません。 |
|
>>2781 68user ソケットについてのご教授、ありがとうございました。 かなり間違って理解していたようですが、 お陰様でソケットの考え方について理解できるようになりました。 |
|
>>2786 68user お返事ありがとうございます。 早速、scroll lockで画面と止めながら(出来ました!)エラーを見てみました。 Updating /etc/fstab failed to open /proc/partitions:No such file or directory Flushing all current rules and user defined chains:ipachains:incompatible with this kernel Clearing all current rules and user and user defined chains:ipchains:Incompatible with this kernel Starting system logger Errot:MM:mm:core:failed to open semaphore file(read-only file system):OS:No such file or directory mount:special device LABEL=/boot does not exisist Starting crond:crond:can't open or create /var/run/crond/pid:Read-only file system と7箇所でエラーが出てました。 これを見て私がわかったのは、 /proc/partitionsがない /bootの何かがない と言うことです。 見てみると、/proc,/boot両ディレクトリの中がまったく存在しませんでした。 何じゃコリャ! UNIX初心者(パソコンも)にはまったく解りません。 どうか、ご教授ください。 |
|
こんばんは。 お仕事大変ですな。まあそう腐らずに頑張ってください >68user さてガキの使いですんません。宿題やってきました。 まずdhcpcdですが、psで確認しても起動時から動いているようなので、 Netscapeの方が先ということはなさそうです。 次にperlスクリプトですが、残念ながら、 Bad arg length for Socket::inet_ntoa, length is 0, should be 4 at -e line 1. と表示されます。要は正引きが失敗しているようです。 逆引きは引数の渡し方がわかりませんでした。 # なんせlinuxからはweb検索にも支障をきたしているもので(^^;) 最後にtcpdumpの出力です。tcpdumpを動かしてから、 % host www.jp.freebsd.org のコマンドと、netscapeにてhttp://www.jp.freebsd.org、 http://210.157.158.42/へのアクセスなどをしてみました。 # が、記録に残っているかは私にはわかりませんでした # /usr/sbin/tcpdump tcpdump: listening on eth0 01:47:38.943528 192.168.0.39.3044 > 143.90.129.198.http: . ack 1226176673 win 8576 (DF) 01:47:38.943528 192.168.0.40.32797 > 192.168.0.1.domain: 29608+ PTR? 198.129.90.143.in-addr.arpa. (45) (DF) 01:47:38.963528 192.168.0.39.3276 > 143.90.129.198.http: S 22004303:22004303(0) win 8192 <mss 1460,nop,nop,sackOK> (DF) 01:47:38.983528 43.242.210.37.6699 > 192.168.0.33.1190: . 3236267430:3236268764(1334) ack 2911899325 win 17252 (DF) 01:47:38.983528 192.168.0.33.1190 > 43.242.210.37.6699: . ack 4294960438 win 17520 <nop,nop,sack sack 1 {4294961772:1334} > (DF) 01:47:38.993528 211.129.12.43.domain > 192.168.0.40.32797: 29608 1/2/2 (141) 01:47:38.993528 192.168.0.40 > 211.129.12.43: icmp: 192.168.0.40 udp port 32797 unreachable [tos 0xc0] 01:47:38.993528 211.129.14.134.domain > 192.168.0.40.32797: 29608 1/2/2 (141) 01:47:38.993528 192.168.0.40 > 211.129.14.134: icmp: 192.168.0.40 udp port 32797 unreachable [tos 0xc0] 01:47:39.003528 143.90.129.198.http > 192.168.0.39.3044: . 5897:6433(536) ack 0 win 32767 01:47:39.013528 192.168.0.39.3044 > 143.90.129.198.http: . ack 1 win 8576 (DF) 01:47:39.013528 143.90.129.198.http > 192.168.0.39.3044: . 6433:6969(536) ack 0 win 32767 01:47:39.013528 192.168.0.39.3044 > 143.90.129.198.http: . ack 1 win 8576 (DF) 01:47:39.023528 43.242.210.37.6699 > 192.168.0.33.1191: . 3298096123:3298097457(1334) ack 2981221337 win 17235 (DF) 01:47:39.023528 143.90.129.198.http > 192.168.0.39.3276: S 1909102369:1909102369(0) ack 22004304 win 536 <mss 536> 01:47:39.023528 192.168.0.39.3276 > 143.90.129.198.http: . ack 1 win 8576 (DF) 01:47:39.023528 192.168.0.39.3276 > 143.90.129.198.http: P 1:43(42) ack 1 win 8576 (DF) |
|
困っています。誰か助けてください。 UNIXのファイルシステムと他のファイルシステムの切り分けをどのコマンドを使用すればいいのかわかりません。(他のファイルシステムは、SafeFile/Globalファイルシステムです。)はじめは、fstypコマンドを使用すれば、良いと思ったんですが、UFS(UNIXファイルシステム)しか、出てきません。それにデバイス中です。と言うエラーが発生して、困っています。解決策を知っている方は、お教え願えないでしょうか? |
|
echoサーバ(Perl)の5行目の 5: use Socket; この文はどういう意味なのでしょうか? おしえてください。 |
|
echoサーバのほうはプログラムに解説してくださっているので、読んでみてなんとか理解できそうなのですが、クライアントのほうを書けそうにありません。クライアントのほうもおしえていただけないでしょうか? |
|
>>2786 68user お騒がせしました。出来ちゃいました。 boot画面を見ていると can't execute rc.sysinit となっていたので、rc.sysinitを見てみるとアクセス権が -rw-r-xr-x となっていました。これでは実行権がないので -rwx-r-xr-x とするとできました。 出来てしまえば簡単なことでした。 ありがとうございました。 |
|
初めまして。大学の授業で初UNIXに相当困り果ててるものです・・・。どうか教えてください。 /usr/dict/words とうゆうファイルは単語の先頭の文字をアルファベット順に並べたものですよね??これを単語のおしまいで分類したものだすようにしたいのです。1行コマンドで・・・。ちなみに大文字と小文字は区別しないで!!! よろしくお願いします(><) |
|
>>2790 has > 最後にtcpdumpの出力です。 Query 投げてないですねぇ。普通は 23:36:51.920878 192.168.0.5.2275 > 192.168.0.1.domain: 4+ A? www.jp.FreeBSD.org. (36) 23:36:52.003329 192.168.0.1.domain > 192.168.0.5.2275: 4 1/4/5 A updraft.jp.FreeBSD.ORG (251) こんな感じのが流れるはずです。念のため、 % strace dig www.jp.FreeBSD.org で流れを追ってみてください。うちの FreeBSD では (*BSD は truss) % truss dig www.jp.FreeBSD.org|egrep 'socket|connect' socket(0x2,0x2,0x0) = 3 (0x3) connect(0x3,{ sa_len = 48, sa_family = 120, sa_data = } },16) = 0 (0x0) となりますが、そちらではどういう結果になりますか? もし socket さえ行っていないようなら、/etc/host.conf とか /etc/resolv.conf の解析あたりでこけているような気がします。 なお、nslookup や host は /etc/hosts や /etc/host.conf を 参照せず、必ず DNS サーバに Query を投げるので、原因の 切り分けの際はご注意を。 > resolve.confにはWin2k動作時に調べておいたLAN内DNSサーバの指定 > [nameserver 192.168.0.1]を記述しています。 DHCP クライアントは /etc/resolv.conf を上書きすると思いますが、 上書き後の内容はどうなっていますか? あとは、DHCP をやめて、手で IP アドレスなどを設定してみると何かに 気づくかも…という役に立たないアドバイスしかないです。 >>2793 だいすけ > 5: use Socket; > この文はどういう意味なのでしょうか? Socket モジュールを使うという宣言です。利点は http://x68000.startshop.co.jp/~68user/net/perl4.html をどうぞ。 >>2793 だいすけ > クライアントのほうを書けそうにありません。 何がわからないのかわからないので、 http://x68000.startshop.co.jp/~68user/net/ を読んでくださいとしか言えません。 >>2795 飴 > これを単語のおしまいで分類したものだすようにしたいのです。 > 1行コマンドで・・・。ちなみに大文字と小文字は区別しないで!!! じゃあヒントだけ。rev というコマンドがあるならそれを 使います。rev がない UNIX なら、わかりません (perl を 使えばできるけど、問題の趣旨とは違うような気がする)。 |
|
あるログファイルに1行出力されるごとに、その行に特定のキーワードが あるかどうかを判断して、あった場合はその行を別のログに出力する といったことをUNIXコマンドでできないかと調べています。 イメージとしては、「tail -f」と「grep」の組み合わせみたいな 感じですが、二つのコマンドをパイプで結合してもダメでした。 何か良い手はないでしょうか? ご存知の方がいたら教えてください。 よろしくお願いします。 |
|
>>2797 HIDE tail -f log | grep foo でできる環境もあります。FreeBSD と Solaris2.6/8 あたりはできるはず。 というか、できない環境をしらないのでアドバイスはできませんが、tail が バッファリングしてるのかな? tail 自体それほど複雑な機能ではないので、さくっと perl などで 自作するのがいいかもしれません。 |
|
>>2798 68user ご回答いただきまして、ありがとうございます。 >tail -f log | grep foo でできる環境もあります。FreeBSD と>Solaris2.6/8あたりはできるはず。 こちらの環境はSolaris2.6です。 tail -f log | grep foo だと意図した形で画面に表示されるのですが、 tail -f log | grep foo >> log2 とやるとlog2には何も出力されないんです・・・・・・ 何か環境が変なのかな? >tail 自体それほど複雑な機能ではないので、さくっと perl などで >自作するのがいいかもしれません。 そうですね。実はこの処理は大容量の性能関連のログから必要な 行を抽出/判定するための使用しようとしているのですが、Perl で作ったらログの行が多いからか、逆にそのツールが動いている 時間はCPUが100%になってしまったのでUNIXコマンドでできないかと 調べている次第です。(Perlはあまり詳しくないので私の作り方が マズイだけかもしれませんが) |
|
>>2799 HIDE > tail -f log | grep foo >> log2 なるほど。grep が出力をバッファリングしてるからですね。ちょっと調べて みた限りでは、/dev/stderr にリダイレクトしてもダメだし、バッファリング ありにするオプションはないようなので、 % tail -f log | perl -ne '$|=1;print if m/foo/' >> log2 てな感じで。 でも、grep でなんとかなりそうな気もするなぁ…。 |
|
>>2800 68user > /dev/stderr にリダイレクトしてもダメだし あー、grep 自体は stdout に出力してるだけだから、シェルで いくら stderr に振ってもどうにもならないですね。 というわけで、続きはここで。 http://pc.2ch.net/test/read.cgi/unix/1022769156/l50 2ch で質問するのなら最初からそっちで聞けっつーの。 |
|
>>2800 68user % tail -f log | perl -ne '$|=1;print if m/foo/' >> log2 をやってみたら、うまくいきました! いろいろ調べていただいたようで、ありがとうございました。m(__)m >でも、grep でなんとかなりそうな気もするなぁ…。 微妙〜なとこでうまくいかないのが悔しいですね。(^^;) でも、この件は急いでいたので大変助かりました。 |
|
>>2801 68user >2ch で質問するのなら最初からそっちで聞けっつーの。 至急性が高かったので両方に投稿しておりました。 大変失礼しました。すいません。 |
|
ここまでまるごとパクリっていうのも... http://www.apk.ne.jp/~yasya/ura/unix/index.html |
|
>>2796 68user digをstrace|egrepした内容です。 socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3 socket(PF_INET6, SOCK_STREAM, 0) = -1 ENOSYS (Function not implemented) socket(PF_INET6, SOCK_STREAM, 0) = -1 ENOSYS (Function not implemented) socket(PF_INET6, SOCK_STREAM, 0) = -1 EAFNOSUPPORT (Address family not supported by protocol) 一応ソケットを作りに行ってますが、connectはしてないみたいです。 あと設定ファイルですが、起動のたびに上書きされており、 % cat /etc/resolv.conf nameserver 192.168.0.1 となっています。 固定IPを設定するのは気がひけるのでまだやってません(^^;) でも毎回同じIPが割り当てられてる気もするし、MACアドレスとかで 決めてるようならいつものIPを指定してみようかな? ついでに >>2781のperlスクリプトをstrace|egrepしてみました。 socket(PF_UNIX, SOCK_STREAM, 0) = 3 connect(3, {sin_family=AF_UNIX, path="/var/run/.nscd_socket"}, 110) = -1 ENOENT (No such file or directory) socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3 connect(3, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.0.1")}}, 28) = 0 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3 connect(3, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.0.1")}}, 28) = 0 お手数かけてますがどうぞよろしく。 |
|
>>2805 has > digをstrace|egrepした内容です。 > socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3 > socket(PF_INET6, SOCK_STREAM, 0) = -1 ENOSYS (Function not implemented) > socket(PF_INET6, SOCK_STREAM, 0) = -1 ENOSYS (Function not implemented) > socket(PF_INET6, SOCK_STREAM, 0) = -1 EAFNOSUPPORT (Address family not supported by protocol) > perlスクリプトをstrace|egrepしてみました。 > socket(PF_UNIX, SOCK_STREAM, 0) = 3 > connect(3, {sin_family=AF_UNIX, path="/var/run/.nscd_socket"}, 110) = -1 ENOENT (No such file or > directory) > socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3 > connect(3, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.0.1")}}, 28) = 0 > socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3 > connect(3, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.0.1")}}, 28) = 0 なんか全然違いますねぇ。UDP/IP で、192.168.0.1:53 宛に connect するはずなので、perl の場合の socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3 connect(3, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.0.1")}}, 28) = 0 という結果は正しいと思います。perl の実行時に tcpdump してみたら どうなるんでしょうか。 うちではこんな感じです。 % truss perl -e "use Socket;print inet_ntoa(inet_aton('www.jp.freebsd.org'))" socket(0x2,0x2,0x0) = 4 (0x4) connect(0x4,{ AF_INET 192.168.0.1:53 },16) = 0 (0x0) sendto(0x4,0xbfbfe464,0x24,0x0,0x0,0x0) = 36 (0x24) recvfrom(0x4,0xbfbfed64,0x400,0x0,0xbfbfe238,0xbfbfe1fc) = 251 (0xfb) close(4) = 0 (0x0) close(3) = 0 (0x0) % truss dig www.jp.freebsd.org socket(0x2,0x2,0x0) = 3 (0x3) connect(0x3,{ sa_len = 48, sa_family = 120, sa_data = } },16) = 0 (0x0) sendto(0x3,0xbfbff184,0x24,0x0,0x0,0x0) = 36 (0x24) select(0x4,0xbfbed694,0x0,0x0,0xbfbed60c) = 1 (0x1) recvfrom(0x3,0xbfbef184,0x10000,0x0,0xbfbed684,0xbfbed678) = 251 (0xfb) close(3) = 0 (0x0) ただ、どうも strace から絞り込んでいく方向は遠回りかもしれません。 IPv6 を OFF にしてみるとか、DHCP を使わずにやってみる方が早道かも しれませんね。 > でも毎回同じIPが割り当てられてる気もするし、MACアドレスとかで > 決めてるようならいつものIPを指定してみようかな? 大抵の DHCP サーバは、どの MAC アドレスにどの IP アドレスを振った かを数日間記憶していて (設定次第ですが)、できるだけ同じマシンには IP アドレスを振るようにしているので、ちょろっと試す分には OKかと 思います。 >>2804 通りがかり > ここまでまるごとパクリっていうのも... > http://www.apk.ne.jp/~yasya/ura/unix/index.html クレーム入れるのもダルいので、放置です。 ちなみに他にもありますよ :-) http://www.it.ice.uec.ac.jp/~furu/unix/kind.html http://noto.cc4-4.kanagawa-u.ac.jp/~jsato/helps/ コンテンツの引用や転載については http://x68000.startshop.co.jp/~68user/ を読んでください、ということで。 |
|
こんにちは。愛子@UNIX1年生 です。 今回、Cシェルを作成することになり、Cシェルはじめて2週間といった 初心者です。どうぞ、宜しくお願いします。 さて、質問なのですが・・・ [ test.txt ] apple 133 123 orange 133 123 candy 133 156 というファイルがあります。 このファイルの各行末に 変数 TEMPSTR に 格納されている文字列を連結するというCシェルを 作成しようとしています。 [ 作成したシェルスクリプト ] #!/bin/csh set TEMPSTR = "LIST" sed 's/$/,123.45/' < test.txt sed "s/^/${TEMPSTR},/" < test.txt sed "s/$/,${TEMPSTR}/" < test.txt [ 実行結果 ] apple 133 123,123.45 orange 133 123,123.45 candy 133 156 ,123.45 LIST,apple 133 123 LIST,orange 133 123 LIST,candy 133 156 文法があいまいです。 となります。 行頭挿入は、出来るのに行末追加は出来ないのは何故でしょうか??? 文法があいまい ということは、変数の指定がいけないと思うのですが ・・・ 変数の中身は、固定でないので(各行違うデータを文末につけるので) 変数を用いなればなりません。 sed以外でも ファイルの各行の文末に文字列を連結することが 出来るコマンドがあれば、そちらの方法でも構いません。 (行数分LOOPを回してやるというLOOP処理では行数が1万行とかあるので NGですが) 質問の仕方が下手で申し訳ありませんが、宜しくお願い致します。 ちなみにバージョンは、UNIX(r) System V Release 4.0 です。 どなたか、ご教授いただければ大変、嬉しく思います。 |
|
自己レスでごめんなさい。 10Hやって出来なかったので、質問したのですが、 インターネットで調べながらやっていたら、出来ました。 sed 's/$/,'$TEMPSTR'/' < test.txt でした。 また、1行目から2行目まで追加したい時は、 @ RW = 2 sed '1,'$RW's/$/'$TEMPSTR'/' < test.txt のようです。 ご参考までに #!/bin/csh set TEMPSTR = "LIST" @ RW = 2 sed 's/$/,123.45/' test.txt sed "s/^/${TEMPSTR},/" test.txt echo RW = $RW echo TEMPSTR = $TEMPSTR sed '1,2s/$/,GYOUMATSU/' test.txt echo "-----------------------------------------------" sed '1,'$RW's/$/'$TEMPSTR'/' test.txt echo "-----------------------------------------------" sed 's/$/,'$TEMPSTR'/' test.txt どなたかが参考になるといいなぁ・・・ では、お騒がせ致しましたです。 |
|
>>2808 愛子 > sed 's/$/,'$TEMPSTR'/' < test.txt もし "" でくくるなら、sed "s/\$/,$TEMPSTR/" ですが、 csh では "\"" とか '\'' というふうに - "" の中に " を入れる - '' の中に ' を入れる ことはできませんので、\ でエスケープしているといつかは 破綻します。よって、 > sed 's/$/,'$TEMPSTR'/' < test.txt のように必要なところのみ '' でくくるのはよいやり方だと 思います。 |
|
sendmailについての質問があります。 現在sendmailのバージョンは、8.9です。 現在使用しているドメインにもう1つドメインを追加したいのですが、 sendmail.cwファイルを作成して、そこを参照するように.defを このようにしました。 USE_cw_FILECLASS=yes cw_FILE_PATH='/etc/mail/sendmail.cw' そして、sendmail.cwの中にドメイン名を記述したのですが、 これだけでは、だめなのでしょうか? やりたい事は、1つのメールサーバーで2つのドメインのメールを受信 したいのです。 検討違いの事をやっているかもしれませんが、教えてください |
|
はじめまして、こんにちは。 HPを開いているのですがご相談があります。 ネットに関してまだ未熟なもので 申し訳ないですがよろしくお願い致します。m(__)m BBSを2つほどレンタルして設置しているのですが 管理人の記事管理モードなどを使うと 書き込み相手の【ホスト名】というのが表示されています。 これを使ってアクセス制限などをするようなのですが 私のBBSでは1つが【4つの数字】の表示(【IPアドレス】ですか?)で もう1つは【〜jp】での表示です。 これら【ホスト名】とは、パソコン1つ1つで絶対に違うものになるのでしょうか? 人によっては時々その数字やアルファベットが、多少変化しているのですが・・・。 同じ物は絶対に存在しないのでしょうか? 例えば学校内の1つの部屋に沢山のパソコンを置いている場合、 どのパソコンを使ってもこの【ホスト名】は別々のものになりますか? それとも同じになる事もあるのでしょうか? このような質問をさせて頂いたのは実はBBSに書き込みされてる方で 『2つのHNを使い、別人を装ってるのではないか?』と 思われる人がいるからなんです。 その2人の人物はいつも同じ日、同じ時間に書き込んでいるのですが 【ホスト名】が常に同じだったので疑った所 『友人で2人とも学校から書き込んでいる』といいます。 その人物達のホスト名は他の方達が【〜ne.jp】で終わってる所 【fm〜ngn.ed.jp】となっています。これは学校や団体を指すのでしょうか? わかりにくい文面で申し訳ないですが、 大変困ってますので、どうかよろしくお願い致します・・・。m(__)m |
|
>>2810 りょうこ よいと思います。あるいは MY_ALIAS で指定するとか。 >>2811 あおい > それとも同じになる事もあるのでしょうか? proxy サーバを経由しないと外に出られないようになっているなら、 ホスト名や IP アドレスは proxy サーバのものになります。学校や 会社などではよくある形態です。 > その人物達のホスト名は他の方達が【〜ne.jp】で終わってる所 > 【fm〜ngn.ed.jp】となっています。これは学校や団体を指すのでしょうか? ed.jp は小・中・高等学校などです。詳しくは http://www.nic.ad.jp/ja/dom/basics.html をどうぞ。ngn は「長野県」でしょうね。 |
|
>>2806 68user perl実行時にstraceしながらtcpdumpしましたが、パケットは流れませんでした。 ただstraceで若干気になったところがあるんですが、 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3 connect(3, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168\ .0.1")}}, 28) = 0 send(3, "9\307\1\0\0\1\0\0\0\0\0\0\3www\2jp\7freebsd\3org\0"..., 36, 0) = 36 gettimeofday({1025110376, 462410}, NULL) = 0 poll([{fd=3, events=POLLIN}], 1, 5000) = 0 と出力されるうち、sendの戻り値36は何を示しているんでしょう? # ちなみにプログラムはpollでタイムアウトを繰り返して終了します。 固定IPを指定してみましたが、やはり同様に名前解決できませんでした。 ipv6を切るのは、やり方がわかっていないのでまだやっていません。 Webの検索をしたときにSolarisで同じような問題にぶつかって、 それについてMLで質問している記録が掲載されていたのを見付けたので、 その人に直接メールで聞いてみようかなぁ。 # その記事には結末が載っていませんでした |
|
>>2813 has > sendの戻り値36は何を示しているんでしょう? 送信したバイト数ですが、この結果だけ見ればちゃんと query を 送信しているように見えます。 というわけで、strace は手詰りですね。後は netstat -s で統計 情報に何か出ていないか調べてみる、くらいしか思い付きません。 |
|
こんにちは パールのコードについて教えてください。 ログの読み込みなのですが、ファイルハンドルをオープンして通常は @log = <FH>; のような形で取り込むのですが、ログファイルの先頭の 1行だけ必要な場合、その1行だけを取得することはできるのですが、 書き換えたその1行を元の先頭に戻したいのです。 メモリ食いの @log = <FH>; は使わないで、while(<FH>){nantoka;} のような形で解決するコードは無いでしょうか。 よろしくお願いします。 |
|
>>2815 moto use IO::Handle して、sysopen して、<FH> して、先頭に seek で戻って print でいけるかな。 ただし、1行あたりの文字数が変わらない場合のみです。 |
|
こんにちは 68user さん 掲示板のログの読み込みに関してだったのですが、やはり、上手い手は無いようなのですね。 いつも思うのですが、open 関数の >> の追加書き込みでログの先頭に書きむ選択肢もあったら、while 関数ももっと活躍できるのにと残念です。 お騒がせしました。 |
|
>>2817 moto > open 関数の >> の追加書き込みでログの先頭に書きむ選択肢もあったら と言われて思い出しましたが、 +> や +>> ってのがありましたね。 ただ、繰り返しになりますが、文字や行の挿入はできませんよ。 あくまで上書きのみです。よって、あまりうれしくないかも。 |