ただ今再起動しました |
利用者の方へ。 サーバを置いてあるところの管理者の方が、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 |