|
>68userさん Sega BBSの件なんですけど、 消去が時間かかりそうだったら、 とりあえずロボット検索に 引っかからないように、しといてほしいのですが… 早めにお願いします。 http://www.google.com/intl/ja/faq.html お忙しいところすいません。 よろしくお願いします。 |
|
初めまして。質問です。 ホームページ本体を置くサーバー(A)とCGIサーバー(B)が別になっていて、 サーバーAにあるHTMLファイルからサーバーBにあるCGIを呼び出し、 サーバーAにある別のファイルの情報を取得するため、以下のように記述しました。 open FH ,"http://www.abc.co.jp/xyz/index.html" or die "open失敗:$!"; しかし、うまくファイルをオープンすることができませんでした。 パスを相対的に指定すれば成功するのですが、絶対的に指定すると、 CGIサーバー内であってもオープンできません。 これはこういう仕様なのでしょうか。 そうだとすれば、他にいい方法はあるのでしょうか。(被参照ファイルをサーバーBに置く以外で) ご回答をよろしくお願いいたします。 |
|
>>1997 ED ロボットよけ META タグを追加しました。 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 時間が取れたらコンテンツ自体を削除します。 >>1998 田中 > open FH ,"http://www.abc.co.jp/xyz/index.html" or die "open失敗:$!"; open というのはファイルをオープンするもので、ファイルいうのは マシンに接続されている HDD や CD-ROM に格納されているものを 指します。 # っていうととても語弊がありますけど。将来的にはそういう指定の # 仕方ができるようになるんじゃないかと思います。 なので、それをしたければサーバ B で動かすプログラムから サーバ A の web サーバにアクセスして http://www.abc.co.jp/xyz/index.html を取得しなければいけません。仕組みについてはここらへんを。 http://X68000.startshop.co.jp/~68user/net/ 実際は wget, fetch などのコマンドや、(perl なら) LWP, IO::Socket などのモジュールを使ってサーバ A から /xyz/index.html を 取得するのがお手軽です。 |
|
68userさん、素早い回答をありがとうございました。 教えて頂いたやり方は、私にはまだ高度すぎるようです。 もう少し勉強してみます。 |
|
はじめまして。初男と申します。 質問があります。 あるシェルスクリプトを実行し成功するのですが、 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 で書くならここまでちゃんとやらないと」と言えるような サンプルにしたいので、直しておきます。 |