みなさんアドバイスありがとうございました。 tarでまとめてリモートコピーする方法でテストしたところ うまくできました。 ありがとうございました。\(^O^)/ |
はじめまして、くろと申します。 ここのサイトのネットワークプログラミング[ SSL/TLS でアクセスしてみよう (1) ]の サンプルを元に、https接続で、メソッドをGETではなくPOSTで、データを送信したところ HTTPステータス[400 Bad Request]が戻ってきてしまいます。 リクエストのヘッダーがおかしいのかな?と思い、下記のようにしたのですが、 POST プログラム名 HTTP/1.0 User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.0) Content-Length: 270 Content-type: text/xml; charset=utf-8 上手くいきませんでした。(改行コードは、\r\nです) このステータスが戻ってくる原因として、他にどんなことが考えられますでしょうか? 正直、今の私にはここまで限界で・・・ どなたかご存知の方がいらっしゃいましたら、教えていただけませんでしょうか? 宜しくお願い致します。 |
>>4006 くろ > POST プログラム名 HTTP/1.0 プログラム名って何ですか? https でなく http ならうまくいくんですか? POST でなく GET ならうまくいくんですか? POST を受けてくれる SSL/TLS サーバが手元にないので、 https://www.rsasecurity.com/solutionsPrimary.asp に対して以下のリクエストを送信してみましたが、正常なレスポンスを 取得できました。 POST /solutionsPrimary.asp HTTP/1.0 Host: www.rsasecurity.com Content-Length: 2 ab |
>>4007 68user 説明に至らない点があったみたいで、すみません。 >プログラム名って何ですか? これは、POSTをするプログラム名を指しています。 教えて頂いたURLに、POSTしてみたのですが、 サーバーからのレスポンスとして、「HTTP/1.1 400 Bad Request」 が戻ってきました。。。 68userさんでは、上手くいっているようなので、 私のプログラムの問題のようですね。。。 既に6日間も悪戦苦闘しますので、 なにか助言などありましたら、お手数ですが宜しくお願いします。 |
>>4008 くろ > これは、POSTをするプログラム名を指しています。 だからプログラム名って具体的に何ですか? POST hoge HTTP/1.0 とかしてたりしませんか? ちゃんと POST /hoge HTTP/1.0 としていますか? んなこたわかっとると思われるかもしれませんが、あなたのレベルが わからないので、こういうところから確認しているんですよ。 |
>>4008 くろ > 教えて頂いたURLに、POSTしてみたのですが、 > サーバーからのレスポンスとして、「HTTP/1.1 400 Bad Request」 > が戻ってきました。。。 ああ、これを見落としていました。 ではリクエストのやり方が悪いのでしょう。ソースを提示してください。 |
>>4010 68user ご迷惑をお掛けしまして、大変申し訳ありません。 プログラム名ですが、[POST hoge HTTP/1.0] という感じで、 設定しております。 以下がソースになります。 +−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+ #include <stdio.h> #include <string.h> #include <sys/types.h> #include <netdb.h> #include <sys/socket.h> #include <netinet/in.h> #include <sys/types.h> #include <sys/uio.h> #include <unistd.h> #include <openssl/crypto.h> #include <openssl/x509.h> #include <openssl/pem.h> #include <openssl/ssl.h> #include <openssl/err.h> #define EXT_OK 0 #define EXT_ERR -1 #define LINE_MAX_LEN 512 #define FILE_PATH_LEN 256 #define SEND_XML_LEN 640 #define RECV_VAL_LEN 256 #define SEND_VALUE "xml=送信データ" int main(int argc ,char *argv[]) { int ierr = 0; int isockt = 0; int read_size = 0; struct hostent *servhost; // サーバ情報構造体 struct sockaddr_in server; // ソケット構造体 struct servent *service; // サービス構造体 SSL *ssl; SSL_CTX *ctx; char *str; char send_buf[SEND_XML_LEN + 1]; // 送信データ char request[SEND_XML_LEN + 1]; // ヘッダー char total_buf[RECV_VAL_LEN + SEND_XML_LEN + 1]; // 送信データ(ヘッダー + データ) char *host = "接続先ホスト名"; // サーバ名セット char *path = "CGIパス"; // CGI名セット char buf[RECV_VAL_LEN]; memset(send_buf,'\0',sizeof(send_buf)); memset(request,'\0',sizeof(request)); memset(total_buf,'\0',sizeof(total_buf)); servhost = gethostbyname(host); if ( servhost == NULL ) { fprintf(stderr, "[%s] から IP アドレスへの変換に失敗しました。\n", host); exit( EXT_ERR ); } bzero((char *)&server, sizeof(server)); server.sin_family = AF_INET; bcopy(servhost->h_addr, (char *)&server.sin_addr, servhost->h_length); service = getservbyname("https", "tcp"); // ポート番号取得 if ( service != NULL ) { server.sin_port = service->s_port; } else { server.sin_port = htons(443); // 取得できなかったら、ポート番号を 443 に決め打ち } isockt = socket(AF_INET, SOCK_STREAM, 0); if ( isockt < 0 ) { fprintf(stderr, "ソケットの生成に失敗しました。\n"); exit( EXT_ERR ); } if ( connect(isockt, (struct sockaddr*) &server, sizeof(server)) == -1 ) { fprintf(stderr, "connect に失敗しました。\n"); exit( EXT_ERR ); } SSL_library_init(); // SSLのライブラリを初期化 SSL_load_error_strings(); // SSLエラーメッセージ Catch ctx = SSL_CTX_new(SSLv23_client_method()); // SSLv2を使用 ssl = SSL_new(ctx); SSL_set_fd(ssl, isockt); // SSLとソケットの関連付け ierr = SSL_connect(ssl); sprintf(send_buf,"%s",SEND_VALUE); sprintf(request, "POST %s.cgi HTTP/1.0\r\n" "User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.0)\r\n" "Content-Length: %d\r\nContent-type: text/xml; " "charset=utf-8\r\n\r\n",argv[0],strlen(send_buf)); sprintf(total_buf,"%s%s",request,send_buf); ierr = SSL_write(ssl, total_buf, strlen(total_buf)); printf("サーバからのレスポンス\n"); while (1) { memset(buf,'\0',sizeof(buf)); read_size = 0; read_size = SSL_read(ssl, buf, sizeof(buf)-1); buf[read_size] = '\0'; if ( read_size > 0 ) { write(1, buf, read_size); } else { break; } } SSL_shutdown(ssl); close(isockt); // ソケットクローズ SSL_free(ssl); SSL_CTX_free(ctx); exit( EXT_OK ); } +−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+ 申し訳ありませんが、ご教授ください。 宜しくお願いします。 |
>>4011 くろ SSL/TLS 以前の問題に見えます。http://X68000.q-e-d.net/~68user/net/ の HTTP クライアントを作ってみよう(1)〜(4) を読んでください。 |
>>4012 68user ご指摘ありがとうございました。 なんと接続することができました。 ご迷惑をお掛けしまして、申し訳ありません。 |
環境変数にセットする値をConfigFileから読み込む仕様のシェルがあります。 しかし今その環境変数の値にスペースがある場合にうまく動きません。 具体的には configFile内に T_DATE=`date +'%Y%m%d%H%M%S'` と記述して実際のBシェルの中で for var in `cat ${CONFIG}` do export $var done としています。 想定としては export T_DATE=`date +'%Y%m%d%H%M%S'` となってほしいのですが 実際には export T_DATE=`date export +'%Y%m%d%H%M%S'`=+'%Y%m%d%H%M%S'` という2つの変数として扱われてしまいます。 これを回避する方法はありませんでしょうか。 使用している環境はHP-UX B.11.11 です。 |
>>4014 どんぐ while read line; do eval $line done < ${CONFIG} てな感じでどうでしょうか。 |
Vacancies in SUN China In 1982 Sun Microsystems created a business vision named “The Network is the Computer”. In the same year Sun initiated R&D on Java Technology. Today Sun is recognized by all as the Premier Network Enterprise Computing Vendor and have a global presence in over 100 countries. In 1987, Sun entered China market and has been dedicated to the technology and customer solution development in China. Customer Solution Center in Beijing expand repidly to provide technical hot line suppot to mission critical customers. We invite top nortch engineers to join our champion team in Beijing to provide world-class customer services. Solution Center Engineer (GC0201938) (53 Vacancies) UNIX generalist responsible for providing system support that includes hardware, software, software applications, and networking to customers via telephone support. Incumbent must be university graduate in Computer Science / Electronic Engineering, knowledgable in O/S like Unix, Linux or Solaris systems, fluent in written and spoken Japanese and with minimum 3 years of Unix Sever Support, System Integration or internal MIS support of Unix Sever. Solution Center Manager (GC0201941) (2 Vacancies) Manages and directs the activities of the Solution Center teams to provide customer facing technical post sales support of both hardware and software issues. Accountable for meeting operational excellence, customer satisfaction and people management goals of Solution Center. Liaise closely with the product technical support group for technical escalation as well as the local field operations. Incumbent must be Universtiy graduate in Computer Science / Electronics Engineering, 10 years customer support experience with 5 years in managerial capacity and fluent in written and spoken Japanese, good English is a plus. To apply this position, Please send your resume in English, Mandarin or Japanese and marked with position code to Lisa.wu@multimage.com.cn. Contact: Tel: +86 10-65057881-17 Lisa 84580901-17 Lisa Mob: 13501160969 Fax: +86 10-65057880/84583069 |
duコマンドで、ディスクの使用率をバイトで表示しようと以下の コマンドを実施したのですが、サイズとディレクトリ名との間に 改行が入り、一行で表示できません。 サイズとディレクトリ名を一行で表示し、その後、改行したいの ですがどうすればよいですか。 5295104 . 2594816 ./tmp1 1864704 ./tmp2 821248 ./tmp3 10240 ./tmp4 ↓ 5295104 . 2594816 ./tmp1 1864704 ./tmp2 821248 ./tmp3 10240 ./tmp4 としたいのですが。 du -k $1 | sort -n -r | awk '{ system("echo "$1"*1024 | bc"); printf(" %s\n", $2) }' |
>>4017 さいさん > du -k $1 | sort -n -r | awk '{ system("echo "$1"*1024 | bc"); printf(" %s\n", $2) }' 改行コードが余分なわけなので du -k | sort -nr | awk '{ system("echo "$1"*1024 | bc | tr -d \\\\n"); printf(" %s\n", $2) }' du -k | sort -nr | awk '{ system("echo -n `echo "$1"*1024 | bc`"); printf(" %s\n", $2) }' とか。 わたしなら「わかりづらい」「無駄なプロセス生成が嫌」という理由から、 du -k | sort -nr | awk '{ printf("%6d %s\n",$1*1024,$2)}' などとします。 |
>>4018 68user >du -k | sort -nr | awk '{ printf("%10d %s\n",$1*1024,$2)}' と最初はやっていたのですが、$1に設定されるブロックサイズが大きい と「$1*1024」でオーバーフローを起こし、正しい計算ができないので systemで、bcで計算をするようなことに |
>>4017 さいさん >>4018 68user >du -k | sort -nr | awk '{ system("echo -n `echo "$1"*1024 | bc`"); printf(" %s\n", $2) }' サーバとかOSのバーションとか記述されてませんでしたけど、 「echo -n」は、依存しませんでしたか。 |
>>4107 68user >>4018 68user >du -k | sort -nr | awk '{ system("echo -n `echo "$1"*1024 | bc`"); printf(" %s\n", $2) }' shかcshで異なるみたいです。 バークレイ版では、「\c」 エスケープを「-n」オプションで代用することができます。 echo が csh(1) の組み込み関数として用いられている場合には、バークレイ方式に 従っています。 #du -k $1 | sort -nr | awk '{ system("echo `echo "$1"*1024 | bc` \\\\c"); printf(" %s\n", $2) }' で、できました。 |
こんにちは kenといいます。 Winsockを使ってネットワークの勉強してまして大変勉強になりました。 ソケットプログラミングを進めていくうちにどうしてもわからない点が発生 したので、もしよろしければとおもいメールしました。 問題はSend()/Recv()でパケットサイズを超えるデータを連続で 送受信させたいのです。 パケットを超える送信をするにはsend()の引数にバッファ、サイズを そのままのっければ、自動でパケットサイズに切り分けて送信してる のを確認しました。ですが、受信終了を示す返り値のlengs=0を受信 できませんでした。どうも送ってないようです。httpサーバーに接続して 受信をためしたのですが、lengs=0を確認でき連続で受信することができました。 recv()での受信lengs:0はシャットダウンを意味するとの記述も見つけたのですが、 shutdown()では送信復帰ができないので、使えません。 パケットサイズを超えるデータを連続で送信し受信する時、 受信データの終了を送信したり、受信するにはどうすればいいので しょうか? サーバーがファイルの終了を示すleng=0を送信するのは なにか命令があるのでしょうか? ソケットをシャットダウンするとleng=0を送信できますが シャットダウンを復帰できないはずですがしてるのでしょうか? よかったらレスお願いしますm(__)m page:homepage3.nifty.com/MIDI-EDITOR/ mail:NQD00781@nifty.com ken |
>>4022 ken TCP ですか? それとも UDP ですか? > パケットサイズを超えるデータ パケットサイズって具体的に何のことを指していますか? > 受信終了を示す返り値のlengs=0を受信できませんでした。 送信側で close か shutdown しましたか? > shutdown()では送信復帰ができないので、使えません。 送信復帰って何ですか? |
sedを使用して先頭1行目のみ置換を行い、 すべてを出力させたいのですが、どうすれば よいですか。 sed 's/o=test$/o=honban/g' とすると置換は行われますが、先頭1行目のみ だけしたいのです。 CM1: id=00001,nm=test,o=aaa,o=test CM2: mod CM3: option - CM4: ftp CM5: get ↓ CM1: id=00001,nm=test,o=aaa,o=honban CM2: mod CM3: option - CM4: ftp CM5: get |
>TCP ですか? それとも UDP ですか? TCPです。 >> パケットサイズを超えるデータ >パケットサイズって具体的に何のことを指していますか? send()/recv()での送信、受信レングスです。 この場合では、Recv時のレングスです。 >> 受信終了を示す返り値のlengs=0を受信できませんでした。 >送信側で close か shutdown しましたか? サーバー側でデータを送信し、終了したらshutdown/closeを行うべき なのでしょうか? 確かにレングス0を受信できますが、その後に 送受信を必要な場合はどうすればいいのでしょうか? httpサーバーにアクセスした時はレングス0が帰ってきたのですが、 shutdownしていたのでしょうか? >> shutdown()では送信復帰ができないので、使えません。 >送信復帰って何ですか? 送信の終了を示す、レングス0を送るためにclose/shutdownを使うと、 その後にアクセスができなくなる。 shutodownしたソケットを再使用は危険とMSDNにでてます。 |
>>4024 どっかん sed -e '1s/o=test$/o=honban/' |
>>4025 ken 要は、ピアが送信したデータが全部届いたことを確認したいのですか? それならば、TCP/IP のレベルではなくアプリケーションのプロトコル レベルで実現するのが普通です。 例: - 送信側は「データ長 + データ」を送信。受信側は最初に受け取った データ長の分だけデータを受信したら、全データ到着とみなす。 - 改行コードをプロトコルのひとまとまりとみなす。送信側は データの末尾に改行コードをつけて送信。受信側は改行コードを 受け取ったら全データ受信とみなす。 端的に言うと、 recv の戻り値が 0 = FIN が届いたとき です (ノンブロッキングモードなどの例外はあるかと思いますが)。 で、FIN を投げるには close か shutdown する必要があるということです。 |
レスありがとうございました。m(__)m >要は、ピアが送信したデータが全部届いたことを確認したいのですか? はい。 >それならば、TCP/IP のレベルではなくアプリケーションのプロトコル >レベルで実現するのが普通です。 httpサーバーにつなげてhtmlを受信した場合に受信終了時にrecv()戻り値が 0を送っていたのは、shutdown()がかかっていたと判断していいのでしょうか? だとすれば、再度htmlを受信する場合は、再度acceptでsocketを作成して受信 開始する必要があるのかテストする必要を感じました。 何度もレスいただきましてありがとうございました。 |
>>4028 ken > shutdown()がかかっていたと判断していいのでしょうか? http サーバが shutdown か close したと判断してよいです。 > 再度htmlを受信する場合は、再度acceptでsocketを作成して受信 > 開始する必要があるのかテストする必要を感じました。 再度接続する場合は、クライアント側は socket を生成して connect しなおす必要があります。サーバ側はリスニングソケットは listen しっぱなしなので、クライアントが接続しなおしてきたら accept すれば よいです。 ただし毎回接続・切断を繰り返していては性能が出ないため、HTTP/1.1 に おいて keep-alive やパイプラインなどの、コネクションを切断せずに 複数のデータを取得するための仕組みが考案されているわけです (これも アプリケーション層での工夫です)。 |
>>4001 68user 2週間程前PEM形式ファイルの読み込みで質問した者です。 なんとか手元を離れたので簡単に報告です。 処理は68user様のご指摘の通り行う事で全て対応できました。 色々ありがとうございました。 行ったのは以下の3処理です。 ・PEM_read_RSAPrivateKey()でPEM形式ファイルを読み込む処理 パスワード付きの場合の処理で少し苦労・・・ ・RSA_private_encrypt()で暗号化する処理 ・Base64エンコードの要求があったので、EVP_EncodeBlock()でエンコー ド処理 出来上がれば単純なのですが、着手した時は全くの白紙状態でしたので 本当に助かりました。有難うございました。 |
いつも参考にさせていただいております。 初めて投稿します。 上田といいます。 よろしくお願いします。 『echo サーバを作ってみよう (3)』を参考にして、echoサーバを作成してみました。 概ねはうまくいきました。 しかし、おそらく子プロセスのものだと思うのですが、defunct(ゾンビ)が残ってしまいます。 このdefunct(ゾンビ)をうまく消す方法はないものでしょうか? ちなみに、私の環境は Cobalt LINUX 5.0 です。 もし、私の勘違いでしたらすみません。お許し下さい。 以上、よろしくお願いいたします。 上田 |
>>4031 上田 > このdefunct(ゾンビ)をうまく消す方法はないものでしょうか? サンプルプログラムでは wait をさぼっているためゾンビが残ります。 サンプルを直そうと思いつつ、はや 2年近く経ってしまいました。 ひとつのやり方として、 >>2584 persianopeh のように SIGCHLD をキャッチする方法があります。あるいは WNOHANG を 指定して waitpid してもよいです。 |
>>4032 68user 68userさん、ありがとうございます。 教えていただいた $SIG{CHLD} = sub { wait }; ですが、不勉強なもので、記述する場所に若干の不安が残っています。 一応、43行目と44行目の間に記述したところ、次の3つは達成できました(目的は達成できました)。 ・サーバ機能 ・複数同時アクセス ・defunctの消去 もし記述する場所が間違っていれば、またご連絡いただけないでしょうか? 36: # forkで子プロセスを生成 37: if ( $pid = fork() ){ 38: # こちらは親プロセス 39: print "親プロセス($$): 引続きポート $port を見張ります。\n"; 40: print "親プロセス($$): クライアントの相手はプロセス $pid が行います。\n"; 41: 42: # 親プロセスはソケットをクローズ 43: close(CLIENT); $SIG{CHLD} = sub { wait }; #←←←ここに追加しました。 44: next; 以上、ありがとうございました。 今後ともよろしくお願いいたします。 上田 |
Cシェルの中で、sqlplusに接続してsqlを実行して結果を表示したいのですが、どのようにすればよいですか? 皆さん、教えてください。よろしくお願いします。 |
始めまして。 sedコマンドで、改行を含む文字列へ変換したいのですが、どのようにすればいいですか? abcde ------ fgh ijk たとえば、abcdeをfgh(改行)ijkとしたい場合、 sed "s/abcde/fghijk/g" file1 > file2 これでは改行無しで置換されてしまいます。 \n,\r\nなど埋め込んでみましたがうまくいきませんでした。 皆さん教えてください、宜しくお願いします。 |
Cシェルの中で、コマンドオプションの有無を判断するのには、どのようにIF文を書けば良いですか? 教えてください、よろしくお願いします。 |
>>4034 noza ヒアドキュメントを使うとできた筈ですが sqlplusの引数でユーザ名とパスワードが必要になるため お勧めしません。 >>4035 アトヌル sedでは確か無理だったと思います。 (嘘ついてたらごめんなさい。) >>4036 y コマンドオプションって何ですか?引数の事? |
>>4033 上田 fork の前にシグナルハンドラを設定するのが普通かと思います。でないと、 設定前にシグナルが飛んできたら困りますので。 ただしシグナルハンドラは子プロセスに引き継がれるので、fork 後に シグナルハンドラを戻すなどの対処が必要です (この例では子プロセスが SIGCHLD を受けることはないので、どちらでも構わないのですが)。 >>4037 zsh > ヒアドキュメントを使うとできた筈ですが ヒアドキュメントでもいいし、別ファイルにしておいて sqlplus $user/$pass @hoge.sql としてもよいです。 > sqlplusの引数でユーザ名とパスワードが必要になるためお勧めしません。 これはまぁいいんじゃないですかね。Perl で Oracle に接続しても スクリプト中にパスワードを書きますし、Pro*C でもバイナリを strings すればわかりますし。 |
yahooオークションの自動ログインシステムをプログラムしていますが、ログインできません。 どなたかご教授願います。以下にソースを掲載しておきます。 import java.net.*; import java.io.*; public class post { public static void main(String[] args) { try { int start = 0; PrintWriter pw = new PrintWriter (new BufferedWriter(new FileWriter("post.html"))); // URLクラスのインスタンスを生成 URL helloURL = new URL("http://login.yahoo.co.jp/config/login"); // 接続します URLConnection con = helloURL.openConnection(); // 出力を行うように設定します con.setDoOutput(true); con.setDoInput(true); con.setRequestProperty("Cookie","B=banotfp0orfbj&b=2"); con.setRequestProperty("Accept-Language", "ja"); con.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)"); // 出力ストリームを取得 PrintWriter out = new PrintWriter(con.getOutputStream()); out.print(".tries=1"); out.print(".done=http://page7.auctions.yahoo.co.jp/jp/auction/g25311966?"); out.print(".src=auc"); out.print("lg=jp"); out.print(".intl=jp"); out.print("login=********"); out.print("passwd=*******"); out.close(); // 入力ストリームを取得 BufferedReader in = new BufferedReader( new InputStreamReader( con.getInputStream(),"JISAutoDetect")); // 一行ずつ読み込みます String line; while ((line = in.readLine()) != null) { // 表示します pw.println(line); } // 入力ストリームを閉じます in.close(); } catch (IOException e) { e.printStackTrace(); } } } post.htmlにはログインされた後の商品ページが表示されます(ログインできれば) |
yahooオークションの自動ログインプログラムを開発していますが、どーしてもログイン できません。どなたかご教授願います。以下にソースを掲載します。 import java.net.*; import java.io.*; public class post { public static void main(String[] args) { try { int start = 0; PrintWriter pw = new PrintWriter (new BufferedWriter(new FileWriter("post.html"))); // URLクラスのインスタンスを生成 URL helloURL = new URL("http://login.yahoo.co.jp/config/login"); // 接続します URLConnection con = helloURL.openConnection(); // 出力を行うように設定します con.setDoOutput(true); con.setDoInput(true); con.setRequestProperty("Cookie","B=banotfp0orfbj&b=2"); con.setRequestProperty("Accept-Language", "ja"); con.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)"); // 出力ストリームを取得 PrintWriter out = new PrintWriter(con.getOutputStream()); out.print(".tries=1"); out.print(".done=http://page7.auctions.yahoo.co.jp/jp/auction/g25311966?"); out.print(".src=auc"); out.print("lg=jp"); out.print(".intl=jp"); out.print("login=******"); out.print("passwd=*****"); out.close(); // 入力ストリームを取得 BufferedReader in = new BufferedReader( new InputStreamReader( con.getInputStream(),"JISAutoDetect")); // 一行ずつ読み込みます String line; while ((line = in.readLine()) != null) { // 表示します pw.println(line); } // 入力ストリームを閉じます in.close(); } catch (IOException e) { e.printStackTrace(); } } } なお、post.htmlには正常にログインできれば商品ページのソースを書き込みます。 |
はじめまして、こんばんは. http://x68000.q-e-d.net/~68user/net/c-http-1.html や http://x68000.q-e-d.net/~68user/net/c-http-2.html 関連で、 URL の解釈について、 http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/pbrowser.html のような記事を見つけました. 正規表現でも見かけられるやりかたでできるのだなぁと目が覚めました. 質問でもなんでもないのですが、お邪魔しましたm(_ _)m |
>>4040 やまさん Java の実行環境がないので検証できませんが、普通にブラウザでアクセスし、 ethereal などでパケットダンプしましょう。さらに自作プログラムのやりとりも 同様にパケットダンプして見比べてみましょう。 >>4041 waka http://www.din.or.jp/~ohzaki/perl.htm#httpURL というのもあります。 scanf 系で %[..] として文字集合が使えるのは初めて知りました。 |
FTPクライアントで分割ダウンロードする場合、 どんなプログラムになるのでしょうか? HTTPクライアントで分割アップロードする場合、 どんなプログラムになるのでしょうか? 教えて頂けませんか? |
>>4043 クライアント > FTPクライアントで分割ダウンロードする場合、 > どんなプログラムになるのでしょうか? REST を使います。 > HTTPクライアントで分割アップロードする場合、 > どんなプログラムになるのでしょうか? 分割アップロードが PUT を指すのか POST を指すのか知りませんが、 規格としては分割アップロードなるものは規定されていないと思います。 サーバ側の CGI なり Servlet なりで引数を解釈するようなつくりに すれば、なんだって可能です。 |
68userさんご教授ありがとうございます。言われたとおりにパケットダンプしてソースを 書き直したところ、今度はcookieが無効であると言う画面がでました。 書き直したソースは以下の通りです。 import java.net.*; import java.io.*; public class post { public static void main(String[] args) { try { int start = 0; PrintWriter pw = new PrintWriter (new BufferedWriter(new FileWriter("post.html"))); // URLクラスのインスタンスを生成 URL helloURL = new URL("http://login.yahoo.co.jp/config/login"); // 接続します URLConnection con = helloURL.openConnection(); // 出力を行うように設定します con.setDoOutput(true); con.setDoInput(true); con.setRequestProperty("Accept","image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*"); con.setRequestProperty("Accept-Language", "ja"); con.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); con.setRequestProperty("Accept-Encoding", "gzip, deflate"); con.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)"); con.setRequestProperty("Host","login.yahoo.co.jp"); con.setRequestProperty("Content-Length","145"); con.setRequestProperty("Connection","Keep-Alive"); con.setRequestProperty("Cache-Control","no-cache"); // 出力ストリームを取得 PrintWriter out = new PrintWriter(con.getOutputStream()); out.print(".tries=1&.done=http%3A%2F%2Fpage7.auctions.yahoo.co.jp%2Fjp%2Fauction%2Fg25311966%3F&.src=auc&lg=jp&.intl=jp&login=formulaatsushi&passwd=formula3"); out.close(); // 入力ストリームを取得 BufferedReader in = new BufferedReader( new InputStreamReader( con.getInputStream(),"JISAutoDetect")); // 一行ずつ読み込みます String line; while ((line = in.readLine()) != null) { // 表示します pw.println(line); } // 入力ストリームを閉じます in.close(); } catch (IOException e) { e.printStackTrace(); } } } etherealのログ POST /config/login HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */* Accept-Language: ja Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) Host: login.yahoo.co.jp Content-Length: 145 Connection: Keep-Alive Cache-Control: no-cache HTTP/1.1 302 Found Date: Tue, 09 Nov 2004 10:41:26 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//page7.auctions.yahoo.co.jp/jp/auction/g25311966%3f&.src=auc 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=0jed4t90p17mm&b=2; expires=Thu, 15 Apr 2010 20:00:00 GMT; path=/; domain=.yahoo.co.jp Set-Cookie: F=a=2AxMxi8sve2gE8jFN9rJ0gWrAAvZQREqLtzb2_UZvSzjM5JqtaIqse_xaCta&b=pEuj; expires=Thu, 15 Apr 2010 20:00:00 GMT; path=/; domain=.yahoo.co.jp Set-Cookie: Y=v=1&n=2q7rnefmn4krh&l=5ehckb00jiki78/o&p=m2avvjp403000400&r=bk&lg=jp&intl=jp&np=1; path=/; domain=.yahoo.co.jp Set-Cookie: T=z=W7JkBBWBfkBBIROI05ItUNi&a=YAE&sk=DAA.hvzZ6s/ztd&d=YQFZQUUBb2sBWlcwLQF0aXABYm4ySnNEAXp6AVc3SmtCQmdXQQ--; path=/; domain=.yahoo.co.jp GET /config/verify?.done=http%3a//page7.auctions.yahoo.co.jp/jp/auction/g25311966%3f&.src=auc HTTP/1.1 User-Agent: Java1.4.0 Host: login.yahoo.co.jp Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive HTTP/1.1 200 OK Date: Tue, 09 Nov 2004 10:41:26 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" 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=c0ev5h10p17mm&b=2; expires=Thu, 15 Apr 2010 20:00:00 GMT; path=/; domain=.yahoo.co.jp /config/verify?.done=http%3a//page7.auctions.yahoo.co.jp/jp/auction/g25311を getする際にヘッダー情報が変わってしまいます。 どなたかご教授願います。 |
>>4045 やまさん 正解は ethereal が教えてくれているはずですので、こういう質問は回答 する側としては非常につまらないのです。だから、質問する側も、もう ちょっと努力する姿勢を見せてください。 > 今度はcookieが無効であると言う画面がでました などというわけのわからんことを言っていないで、 「IE では〜というリクエストを送っているが、Java だと〜という リクエストを送信してしまう。IE と同じリクエストを送信するには どうしたらよいか」 くらいの質問にブレイクダウンしてください。リクエストとレスポンスを 見比べるだけの注意力があれば簡単なはずです。 あと、HTTP の基本的な知識があるのかないのかさっぱりわからないので、 http://x68000.q-e-d.net/~68user/net/ HTTP クライアントを作ってみよう(1)〜(4) を読んだ上で、telnet を使って接続してみてください。それに成功してから 初めて Java で実現するにはどうすればいいか、という話になるわけです。 一応ヒントだけは出しておきます。 - /config/verify に cookie なしでリクエストしているのは誰か? まだ 提示していないソースがあるのか? URLConnection クラスが自動的に 再接続しているのか? - URLConnection が自動的に再接続しているのであれば、 HttpURLConnection クラスを使って setInstanceFollowRedirects メソッドで再接続を抑止し、自前で cookie 付きで再接続してみては。 |
>>4046 68user > 一応ヒントだけは出しておきます。 試したわけではないので、ヒントが的確かどうかは知りません。念のため。 |
当分の間、本掲示板での UNIX・ネットワークに関する一般的な質問の受け付けを 中止します。理由は http://X68000.q-e-d.net/~68user/cgi-bin/wwwboard.cgi?howtouse さえ読まないマルチポスト馬鹿のせいで不愉快な思いをするのがアホらしくなった からです。UNIX・ネットワークに関する一般的な質問がなされた場合、その書き込みを 削除することがあります。 今後は当ページのコンテンツに対するご意見・ご指摘のみ受け付けます。 あと、雑談も OK です。 これまで回答してくださった方々、まともな質問者の方々には深く感謝 いたします。ありがとうございました。 |
>>4048 68user 懇切丁寧な回答、いままでどうもお疲れ様でした。 なんだかんだ結局見てるだけで力になれず、すんません。 ところで、コンテンツに関するご意見・ご指摘は歓迎とのことですし、このまま 何もやりとりが亡くなるのも寂しいので、ちょっと一言。 「POP3クライアントを作ってみよう」で、APOPではサーバ側に生パスワードを 持っていないといけないという点でセキュリティ上イマイチである、と 書かれていますが、それではどんな方法だと納得できそうですか? (crypt等したパスワードを使うというイメージ or もっとよい案?) |
>>4038 68user 68userさんありがとうございます。返事が遅れてすみません。 実は『シグナルハンドラを戻すなどの対処』部分がよく分かりませんでした。 もしよろしければこの部分のコードを教えていただけないでしょうか? 本当は自分なりに勉強してこの部分のコードを書き、このサイトにアップしたいという気持ちはあるのですが、なにぶん初心者なもので。。。 実際のテストでうまくいっているということと、この例では子プロセスがSIGCHLDを受けることはないとのことですので、当面はとりあえず現在の位置で対応させていただきます。 もし『シグナルハンドラを戻すなどの対処』を私なりに見つけることができたら、本サイトで報告させていただきます。 上田 |
>>4049 has その文章を書いたのは 5〜6年前なのでもう忘れてしまいましたが、 改めて考えてみました。 まず、 - ファイルに生パスワードを保存しておくのはよいことではない というのは納得していただけるかと思われます。 もちろん、デメリットを上回るメリットがあれば生パスワードを保存 してもよいのでしょうが、APOP については特にメリットらしきものは 見当たりません。 また、管理面からいっても、UNIX のシャドウパスワードと別管理でも よい場合もあるでしょうし、別管理になっても構わない場合もあるでしょう。 しかし、APOP では別管理にせざるをえません (選択の余地がない)。 > それではどんな方法だと納得できそうですか? APOP はサーバがクライアントにタイムスタンプを通知する際、サーバが 保持しているパスワードが - 生パスワード - パスワードの MD5 値 - パスワードの SHA-* 値 のいずれであるかを通知する、というのがわたしの考えです。 そうすれば、クライアント側はそれに応じて入力されたパスワードをそのまま 送るか、MD5 値を送るかを決定できます。また、サーバ管理者の方針により、 生パスワードで管理することもできるし、シャドウパスワードと共用にする こともできます。 なお、この部分はどうも叩かれ所のようで、この APOP 批判の文章を読んで 「こいつはわかってない」と評価している人を掲示板などで見かけます (わたしは何がどうわかってないのかが理解できないので、何ともいえない のですが)。 >>4050 上田 > 実は『シグナルハンドラを戻すなどの対処』部分がよく分かりませんでした。 > もしよろしければこの部分のコードを教えていただけないでしょうか? $SIG{CHLD} = 'DEFAULT'; です。 |
>>4051 68user > 管理面からいっても、UNIX のシャドウパスワードと別管理でも > よい場合もあるでしょうし、別管理になっても構わない場合もあるでしょう。 > しかし、APOP では別管理にせざるをえません (選択の余地がない)。 そうですね。使う側がやりたいように出来るよう、自由度を持たせておくという 考え方のツールは多い気がしますし。 > サーバが保持しているパスワードが > - 生パスワード > - パスワードの MD5 値 > - パスワードの SHA-* 値 > のいずれであるかを通知する 同感です。 > なお、この部分はどうも叩かれ所のようで、この APOP 批判の文章を読んで > 「こいつはわかってない」と評価している人を掲示板などで見かけます そうなんですか。私にもよくわかっていないようなので誰かに教えて欲しいです。 RFC2195とかにはchallenge-response authentication protocolを使うと サーバにパスワードを*平文で保存せずに済む*とあるようです。 ひょっとしてパスワードとは別の、もっと重要なことが理解できてない ということなのかもしれないですね…。 |
>>4052 has > RFC2195とかにはchallenge-response authentication protocolを使うと > サーバにパスワードを*平文で保存せずに済む*とあるようです。 なるほど。 http://www.lins.jp/~obata/imap/rfc/rfc2195ja.html 鍵付き MD5 ダイジェストを利用し、サーバ上に平文で秘密鍵が保管 される必要はないので、RFC 1734 で規定される POP3 の使用のための APOP より改善されたものからなるともいえる。 ということで、APOP はイマイチと自信を持っていえるようになりました。 該当ページもそのうち加筆・修正しておきます。 ところで RFC 2195 は IMAP と POP に CRAM を導入しよう、というものですが、 IMAP では CRAM-MD5 や CRAM-SHA に対応した実装がいろいろありますけど、 POP の方は普及してるんですかねぇ。 http://risky.cs.inf.shizuoka.ac.jp/~ynoguchi/index.php?POP%20(%20courier-pop%20) には (courier-pop は) courier-imap と同様,CRAM-MD5, CRAM-SHA に対応可能 だが,結局,そのプロトコルに対応するクライアントがない とありますし。 |
>>4053 68user 更新しました。 http://x68000.q-e-d.net/~68user/net/pop3-3.html 「シャドウパスワードと共通化できない」という批判は、CRAM-MD5 でも 共通化できないような気がしたので (crypt には salt があるけど、 CRAM-MD5 にはないし、CRAM-MD5 には ipad とか opad とかがあるけど、 crypt にはないから)、とりあえず削除してあります。 |
>>4047 やまさん 68userさんお返事遅くなりました。四苦八苦しましたけど ヒントいただいた通りプログラムを組みなおしたところ、 無事ログインできました。ありがとうございました。 |
なんとなくアンケートをとってみることにしました。 http://X68000.q-e-d.net/~68user/tmp/questionnaire.cgi |
「UNIX の部屋」を更新しました。 http://X68000.q-e-d.net/~68user/unix/ |
http://x68000.q-e-d.net/~68user/unix/pickup?freebsd-update 注意点は以下の通り。とある文言の、 <li>freebsd-updateの<li>、 HTTP 経由でファイルを\取得するので、の\、 これらは、誤植でしょうか? でも、ソースを見ると<LI>と大文字で書かれてるし・・・ |
>>4058 へにか ありがとうございます。修正しました。 誤植って言いはると void 氏みたいなので、タイプミスということでひとつ。 |
>>4059 68user > 誤植って言いはると void 氏みたいなので、タイプミスということでひとつ。 了解しました。気になったので、検索かけたら・・・ 何て言っていいのやら。 |
日記。 % mkdir dir % touch dir/file % chmod 400 dir % ls -l dir としたとき、dir/file を stat(2) する権限がないわけなので、Permission denied となる (Linux・Solaris では実際にそうなる)。 # http://x68000.q-e-d.net/~68user/unix/pickup?chmod ところが FreeBSD では何も表示されず (エラーも出ず)、exit status も 0 で正常終了してしまっている。 これを調べようと、FreeBSD 5.2.1-RELEASE の ls ソースを見てみる。 # http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/bin/ls/ ずっと ls ってのは opendir して readdir して stat するものだと信じていたが、 実際には fts(3) -- traverse a file hierarchy http://www.freebsd.org/cgi/man.cgi?query=fts&manpath=FreeBSD+5.3-RELEASE+and+Ports&format=html を使っていて、上記のシステムコールは間接的にしか使用していなかった。 >>3773 68user で買った本を読むと、しっかり書いてあった。 この人の書く文章にはおもしろみのかけらもなく なんて文句言う前に、ちゃんと目を通すべきということか (全然読んでなかった)。 fts(3) は 4.4BSD から実装され、GNU 方面では glibc2 で採用された。glibc の マニュアルには BSD 4.4. fts ユーティリティは、将来の St -p1003.1-88 リビジョンに 含まれると期待されている。 と威勢のいいことが書いてあるが、少なくとも Solaris9 には実装されていない。 はじめて fts(3) を使ってみる。以下のプログラムで、stat できない場合エラーと 判断できている。FreeBSD の ls にはそれっぽい箇所があるにはあるが、その処理が うまく機能していないのか、あるいは謎の仕様なのか…。 ----- #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fts.h> main(){ FTS *ftsp; char *path[2]={"dir", NULL}; ftsp = fts_open(path, FTS_PHYSICAL | FTS_NOCHDIR, NULL); if ( ftsp == NULL ){ perror("fts_open"); exit(1); } FTSENT *ftsentp; while (1){ ftsentp = fts_read(ftsp); if ( ftsentp == NULL ){ break; } struct stat *sp = ftsentp->fts_statp; printf("%c", sp->st_mode&S_IRUSR ? 'r' : '-'); printf("%c", sp->st_mode&S_IWUSR ? 'w' : '-'); printf("%c", sp->st_mode&S_IXUSR ? 'x' : '-'); printf("%c", sp->st_mode&S_IRGRP ? 'r' : '-'); printf("%c", sp->st_mode&S_IWGRP ? 'w' : '-'); printf("%c", sp->st_mode&S_IXGRP ? 'x' : '-'); printf("%c", sp->st_mode&S_IROTH ? 'r' : '-'); printf("%c", sp->st_mode&S_IWOTH ? 'w' : '-'); printf("%c", sp->st_mode&S_IXOTH ? 'x' : '-'); printf(" %d %s\n", sp->st_mode, ftsentp->fts_path); if ( ftsentp->fts_info == FTS_NS ){ perror("stat failed"); exit(1); } } exit(0); } ------ あと、 http://www.freebsd.org/cgi/man.cgi にて FreeBSD 5.3-RELEASE からは ports マニュアルも検索できるように なっていることに気づいた。これは大変素晴らしい。 |
>>4056 68user > なんとなくアンケートをとってみることにしました。 アンケートの受付を (11/27 の時点で) 終了しました。結果をお知らせします。 [質問] 68user's page で今後読みたいコンテンツがあれば選択してください (複数選択可)。 [選択肢] 1. UNIX コマンドのコンテンツ充実 2. UNIX howto (「〜するには?」集のようなもの) 3. UNIX インストール・サーバ構築 4. ネットワークプログラミングのコンテンツ充実 5. web と CGI についてのコンテンツ充実 (含 Java Servlet・EJB) 6. C 言語講座的なもの 7. 業務系システム構築講座 (設計・コーディング・DB) 8. プログラマや SE の仕事について思うことをつらつらと [結果] 回答総数 67 1. 36(17%) ************************************ 2. 42(20%) ****************************************** 3. 27(13%) *************************** 4. 29(14%) ***************************** 5. 13(06%) ************* 6. 14(06%) ************** 7. 18(08%) ****************** 8. 25(12%) ************************* [感想] 1・2 が多いのは予想していましたが、5・6 が少ないのは予想外でした。 5 は書きかけのコンテンツのまま放置してあるので、その辺の情報を今ほしい 人はここにはいないってことでしょうか。6 は世の中は意外と保守的で、仕事で いまだに C でごりごり書いている (書かされている) 人が多数いるに違いない と予想したのですが、はずれたようで。 あと、7 より 8 の方が多いのもちょっと不思議です。 頂いたコメントについてですが、 > div 開始タグより div 終了タグが圧倒的に多い とりあえず気づいたところは直しました。自分で確認して、あまりにも 閉じ側が多いので笑ってしまいました。 あと、 >>3951 ほんたか > 1.「h 1文字左に移動」がリストからはみ出ています。 も直しました。 アンケート結果は今後の参考にさせていただきます。ありがとうございました。 |
「ネットワークプログラミングの基礎知識」に HTTP クライアントを作ってみよう(5) - 認証編 - http://X68000.q-e-d.net/~68user/net/http-auth-1.html を追加しました。 |
こんにちは。 こちらのサイトに来るのは今日が初めてですが、内容が充実していて大変参考になるサイトですね。 今後も利用させて頂こうと思います。さっそくですが、xlibについて質問をさせてください。http://x68000.q-e-d.net/~68user/xprogram/xlib-1.html のxlib-1.c を cc -o xlib-1 xlib-1.c -I /usr/X11R6/include -lX11 -L /usr/X11R6/li のように実行したら、何にも出て来なかった。私が使っているのは red hat linux 8.0です。宜しくお願いします。 |
>>4064 sqh00 カレントディレクトリに xlib-1 というバイナリが生成されているか、 あるいは何かしらのエラーメッセージが出力されていると思いますので 確認してみてください。 |
カレントディレクトリに xlib-1 というバイナリが生成されているが、実行できない。このように、実行したら、何にも出て来なかった。 [root@dm1511 xlib]# xlib-1 bash: xlib-1: command not found |
>>4066 sqh00 カレントディレクトリにあるバイナリは % ./xlib-1 と実行してください (% はプロンプト)。 |
実行ができました。ありがとうございます。 |
「ネットワークプログラミングの基礎知識」に HTTP クライアントを作ってみよう(6) - Digest 認証編 - http://X68000.q-e-d.net/~68user/net/http-auth-2.html を追加しました。 ところで cnonce は選択平文攻撃への耐性を高める効果があるとかなんとか 知ったかぶって書いてしまいましたが、cnonce がないと具体的にどういう 攻撃ができるんでしょうかね。 差分解読法かなぁと思ったんですが、MD5 に差分解読法って有効なんでしょうか。 あるいは salt 的な意味合いがあるんでしょうか? いまいちイメージがわかない。 |
「ネットワークプログラミングの基礎知識」で勉強させていただいています。 kqueue の説明をみて早速いぢってみました。 サンプルでは kqueue() の戻り値に対して、終了時の処理が何もされていません。 man で調べたたところ、kqueue() の戻り値はファイルデスクリプタと記されています。 init kq = kqueue(); close(kq); としても、close の戻り値が -1 で閉じることができませんでした。 なので、 init kq = kqueue(); close(kq); init kq = kqueue(); close(kq); とすると、kq は 1 回目が 9、2 回目が 10 といったようにインクリメントされてしまいました。 fcntl で kq の情報を取得しようとしてもすべての戻り値は -1 でした。 なんとなく、ファイルデスクリプタとして扱えていないような気がします。 当方は Mac OS X 10.3.7(BSD 4.4 ベースの Darwin) です。 本当の BSD なら、close できるものなのでしょうか。 もし、kqueue の説明を追加する予定があるようでしたら、close または、それに代わる処理も追加してもらえると大変助かります。 |
>>4070 たなか > 本当の BSD なら、close できるものなのでしょうか。 FreeBSD 5.2-RELEASE では close(2) できました。ちなみに カーネルには queue 用を close するコードも含まれています。 詳しくないので事情はわかりませんが、Mac OS X (Darwin?) の 問題ではないかと思います。 > close または、それに代わる処理も追加してもらえると大変助かります。 echo サーバばかり作っていると終了処理がおろそかになっていけませんね。 「quit」を送ると終了するようにするなど、何かしら考えたいと思います。 |
>>4071 68user どうもありがとうございます。 >> 本当の BSD なら、close できるものなのでしょうか。 > FreeBSD 5.2-RELEASE では close(2) できました。ちなみに > カーネルには queue 用を close するコードも含まれています。 手元に BSD が動作するマシンがないので、実験できませんでした。 Darwin の問題ですね。Apple に連絡してみます。 下のコードを実行すると次のような結果となります。 kqueue : 3 close(3) : -1 close: Bad file descriptor kqueue : 4 close(4) : -1 close: Bad file descriptor ------------------------------------------------ #include <stdio.h> #include <sys/types.h> #include <sys/event.h> #include <sys/time.h> #include <unistd.h> int main() { int kq; int ret; kq = kqueue(); printf("kqueue : %d?n", kq); if (kq == -1) { perror("kqueue"); } else { ret = close(kq); printf("close(%d) : %d?n", kq, ret); if (ret == -1) { perror("close"); } } kq = kqueue(); printf("kqueue : %d?n", kq); if (kq == -1) { perror("kqueue"); } else { ret = close(kq); printf("close(%d) : %d?n", kq, ret); if (ret == -1) { perror("close"); } } return 0; } ------------------------------------------------ |
サーバがHP-UX11.00で、Bシェルでシェルを書いています。 シェル中で、「ls *.txt」を実行しています。 "*.txt"が存在しない場合、エラーが出力されるので、 「ls *t.xt > /dev/null 2>&1」で、エラーを出さないよう にしました。 そこで、lsの処理に"grep -v"を追加し、"*.txt"がない 状態にすると「*.txt がみつかりません。」がでます。 ls *t.xt | grep -v "kekka" > /dev/null 2>&1 エラーがでないようにするにはどうしたらよいのですか。 |
ここで質問する人のブラウザには、 「UNIX・ネットワークに関する一般的な質問は受け付けていません。」 という一文は映らないのだろうか? >>4073 さいさん 最終的にどうしたいのか良く判らないが、取りあえずはこれで。 ls *txt 2>/dev/null | grep -v "kekka" |
>>4074 zsh ありがとうございます。 実際にしたいことは、 シェルを実行した際、「*.txt がみつかりません。」を 標準出力したくないのと、戻り値の判定をしたいのです。 ls *.ldif | grep -v "kekka" > /dev/null 2>&1 if [ $? -ne 0 ] ; then echo "Text File Nothing Today" exit 0 fi |
>>4075 さいさん すみません。 間違いがありました。 実際にしたいことは、 シェルを実行した際、「*.txt がみつかりません。」を 標準出力したくないのと、戻り値の判定をしたいのです。 ls *.txt | grep -v "kekka" > /dev/null 2>&1 if [ $? -ne 0 ] ; then echo "Text File Nothing Today" exit 0 fi |
>>4076 さいさん 結果的にファイルの有無を確認したいんですよね? だとすれば、戻り値のチェックよりも下記のようにしては如何でしょうか? set -- `ls *txt 2>/dev/null | grep -v "kekka"` if [ $# -eq 0 ] ; then echo "no file." fi ※:シェルに引数を与えている場合等は考慮が必要です。 |
>>4077 zsh ありがとうございます。 set -- `ls *txt 2>/dev/null | grep -v "kekka"` の 「set -- `ls 」 の使い方教えてください。 どのような意味なのですか |
set -- で引数(定位置パラメタだっけ?)を書き換えることが出来ます。 今回の場合は、 ls *txt 2>/dev/null | grep -v "kekka" の出力で置き換える事になりますので、 $#で上記コマンドの結果出力されたファイル数を参照できます。 |
>>4079 zsh お礼遅くなって申し訳ありません。 ありがとうございます。 >set -- >で引数(定位置パラメタだっけ?)を書き換えることが出来ます。 参考本とかで調べてます。 |
ご存知の方おられましたら、ご教授ください。 環境OSは、Win2000です。 OpenSSLライブラリを利用したDER形式の鍵ファイルの読み書き方法を実装方法が わかりません。i2d_RSAPrivateKey、d2i_RSAPrivateKeyを利用し、ファイル出力 をしてみましたが、_fp付きはエラーです。(_bio付きはOK) また、ここで出力された鍵ファイルは、OpenSSLでは、暗号/復号可能です。 しかし、他社製品(RSA BSAFE)では、鍵ファイル読み込みエラーとなります。 rsaコマンド等で変換作業を行うと読み込み可能となり、暗号・復号ができます。 なんだか理解できません。 以上、宜しくお願い致します。 |
>>4081 しょしん 暗号に関する一般的な質問も受け付けていません。 ■暗号技術【ROUND2】■ http://pc5.2ch.net/test/read.cgi/tech/1088530204/l50 などで質問してください。 - OpenSSL のバージョンくらい書きましょう。 - 何を知りたいのか不明。_bio 付きで出力して、rsa コマンド等で 変換して、RSA BSAFE で読み込めているんなら別にいいのでは。 例えば「rsa コマンドに頼りたくない」「なぜ rsa コマンドを 使わなければいけないのかわからないので、解説してほしい」 などと書くべき。 - 単に _fp 付きはエラーと言われても、「コーディングミスでは?」 くらいしか返す言葉はありません。つーか、ソースくらい提示しましょう。 |
内容不備&質問場所違いでした。 大変失礼しました。 撤収します。 |
CGIでmkdirとかmountとかを呼び出す方法をご教授願います。 サーバー上でプログラムを実行させたいのですが、動作しませんでした。 C言語にてCGIプログラムを作っています。 execveを使用してもうまく動作しませんでした。 ------- test.c (test.cgi) ----------------------- #include <stdio.h> int main() { char *argv[3]; argv[0]="/bin/mkdir"; argv[1]="test"; argv[2]=NULL; int pid=fork(); if(pid==0){ execve(argv[0],argv,NULL); perror("execve"); exit(0); } return 0; } |
↓↓ #include <unistd.h> が抜けていました。 よろしくお願いします。 |
はじめまして。 いつも「UNIXの部屋」を利用させていただいています。 awkコマンドのところですが、誤字がありましたのでお知らせさせていただきました。 **************************************************************** 特殊なパターンとして BEGIN と END がある。BEGIN は最初に実行され、END は最後に実行される。 % ls -l | awl 'BEGIN { print "START!"} {total+=$5; print $9} END {print "size total="total} ' **************************************************************** 1つ目のパイプの後の「awk」が「awl」になっています。 「awkのエイリアスです。」なんていわれたら、どうしようもありませんが…。 取り急ぎ、ご連絡までに… |
>>4086 たらい 修正いたしました。ご指摘ありがとうございました。 http://X68000.q-e-d.net/~68user/unix/pickup?awk |
ライセンスについて質問です。 このサイトにあるコードはフリーソフトウェアと考えてよいでしょうか。 チュートリアルサイトなのでコードを自由に利用してよいだろうとは思ったのですが、 念のため確認させてください。 具体的にはecho-server-select.cを参考にしながらプログラムを書いたのですが、 将来それをフリーソフトウェアとして配布したいと考えています。 問題ないですよね? 問題あるなら空で書けるように修行してやり直すことになるのですが…。 ちなみに作っているものはこれ http://humming.dip.jp/bardic/ でネットゲームのようなものです。 よろしくお願いします。 |
>>4088 tansy > 将来それをフリーソフトウェアとして配布したいと考えています。 > 問題ないですよね? はい、問題ありません。ただしエラーチェックが甘めなので、それを踏まえた上で お使いください。 ついでなのでライセンスを明確にしたいと思います。 わたしが書いたプログラムは、特に明記していない場合は修正 BSD ライセンスと します (現時点で修正 BSD ライセンス以外のライセンスを適用しているプログラム はありません)。 わたしが書いた文章は、フリーではありません。ただし (言うまでもありませんが) 著作権法における引用は可です。 |
>>4089 68user 修正BSDライセンスであること了解しました。 > ただしエラーチェックが甘めなので、それを踏まえた上でお使いください。 了解です。 ありがとうございました。 |
はじめまして。今卒業研究に必死に取り組んでいるんですけども、 ソケットプログラミングがよく分かりません・・・ sendやrecvなどを使って、更新されていくデータを一定時間 ずーっと送信、もしくは受信ってできますか? 研究室も誰もいないし、聞けるのはみなさんしかいません。うう。 どうかお願いします。 PS.焦っているので、他の掲示板などでも同様の書き込みをするかもしれません。 ここが最初ですが、もし他の掲示板から何かいいアドバイスをいただけましたら、 すぐに反映させていきたいと思います。よろしくお願いします。 |
亜紀さん 質問の内容が漠然としているので、ちょっと答えずらいのですが。。。 一定時間ずっと、送信もしくは受信することはできますよ。 まあ、ソケットはありふれたものなので、インターネット上を検索すれば、 ソースコードの例は簡単に見つかると思いますよ。 ソケット、socket、ソースなどのキーワードで検索すれば簡単に見つかるかも。 焦る気持ちはわかりますが、同じ質問を複数の掲示板に書き込む行為は良く ないので、やめたほうがいいですね。 では。 |
JAVA から cシェルを実行したいのですが どのように記述すればよいのでしょうか。 Runtime rt = Runtime.getRuntime(); String[] command = {"/root/scripts/t.csh"} ; Process process = rt.exec(command); と記述しておりますが、実行できず困っています。 |
UNIXのシェルスクリプトについて教えて下さい。 OSは、HP-UX11.00です。 ファイル中に存在するある文字列をsedを使用して置換して いるのですが、sedで置換を行うとき条件を指定して実行する ことはできるのでしょうか。 id: u=aaaa.bbbb,o=co.jp,o=1234,code=vip aaaaaa,bbbb,code=vip,code=ip bbbbb,bbbb id: u=aaaa.bbbb,o=co.jp,o=1234,code=vip aaaaaa,bbbb,code=vip,code=ip bbbbb,bbbb id: u=aaaa.bbbb,o=co.jp,o=1234,code=vip aaaaaa,bbbb,code=vip,code=ip bbbbb,bbbb id: u=aaaa.bbbb,o=co.jp,o=1234,code=vip sed 's/code=vip$/code=normal/g' ファイル名 とすると「code=vip」がある行に対して置換が行われます。 先頭が、"id: "から始まる行のみ「code=vip」を「code=normal」に 置換したいのですが、sed1回で可能でしょうか。 それとも、作り込みが必要でしょうか。 |
Solaris8のcshについて教えて下さい。 nawkを使用しているのですが、1行での表記が長いので手頃なところで改行 して見易いように複数行にしたいのですが、その場合、これは、1行の処理 ですと認識させたいのですが、どのようにすればよいのですか。 ¥、&、$とかつけてみたのですが、「Unmatched '」がでてしまいます。 お願いします。 #!/usr/bin/csh # set sys_no = "99" set aaa=`nawk -v NO=$sys_no -F":" '/^[ \t]*#START/,/^[ \t]*#END/ \ { if (substr($1,1,1) != "#" && substr($1,1,2) == NO) print $2 }' list.txt` echo $aaa |
>>4094 とも sed -e 's/^\(id.*code=\)vip/\1nomal/' file とか sed -e '/^id/ { s/code=vip$/code=normal/ }' file あたりでできます。 >>4095 ばんじょう 「\\」でいけたと思います。 ・・・正直cshはやめた方が良いと思いますが・・・ |
>4096 >「\\」でいけたと思います。 でやってみましたが無理でした。 動きはしましたが、nawk内の条件が無視され全て取り出されました。 ふと、もう1個ふやしたらどうなるのだろうと、「\\\」でやって みたところ上手くいきました。いった模様です。 しかし、変ですね。怖い環境、怖いcshだと。 >・・・正直cshはやめた方が良いと思いますが・・・ ということは、shとかbashですか。 Solarisは、bashが多いですが・ |
>>4096 zsh >sed -e 's/^\(id.*code=\)vip/\1nomal/' file では、上手く行きました。 >sed -e '/^id/ { s/code=vip$/code=normal/ }' file では、 sed: 関数 /^id:/ { s/code=vip$/code=normal/ } はパースできません。 となりました。 |
>> 4096 参考に、sedで使用している 「's/^\(id.*code=\)vip/\1nomal/' 」 「'/^id/ { s/code=vip$/code=normal/ }' 」 の使い方について教えて下さい。 |
>>4098 とも }の前に改行を入れないと動作しません。 (実装しているsedの違いかもしれませんが。) >>4099 やまげん 説明下手なので、この辺を参考にしてください。 ttp://pegasus.rutgers.edu/~elflord/unix/sed.html |
>>4100 zsh >説明下手なので、この辺を参考にしてください。 >ttp://pegasus.rutgers.edu/~elflord/unix/sed.html 英語なんですね。 |
>>4101 やまげん それじゃあ簡単に。 "\("と"\)"で囲まれた部分にマッチした文字列は、 変数に格納され、順番に\1,\2で取り出す事が可能です。 /Pattern/ { command } でPatternに一致した行に対してcommandを実行します。 こんな感じですかね。 正直、自分の解釈が間違っている可能性があるので、 あまり人に教えることはしないのですが。。。 |
はじめまして、高島屋です。 solarisでC言語にてアプリケーションを作成する際の、1プロセスが可能なファイルオープンのMAX値について教えていただけないでしょうか? 実際にopen可能な、、と言う意味ではなく、「メーカで保障されている」MAX値を調査しています。 利用しているコンパイラは「SunOneStudio8」。 まず、当方で調査した結果を報告致します。 ・ANSI規格の規格では8以上とされている。(「新ANSIC言語辞典」技術評論社→コンパイラに対して8以上を保障しなさいと言う意味だと思います) ただし、/usr/include/isostdio_iso.hでは、FOPEN_MAX=20と設定されている。(CPU=SPARK) ・solris limit,sysdefコマンドで確認した所、 limitコマンドでのファイル記述子の最大数は256。 sysdefコマンドのfile descriptorsに関する、"process Resource Limit"の値も共に256。 実際に1プロセスで256ファイル以上をオープンすると、それ以降のファイルオープンが失敗しました。 ・その他 システム全体で同時open可能なファイルの最大数があるのかは不明(調査不足) なお、sysdefコマンドで確認した所、maximum number of process = 30000 maximum processes per user id = 29995の制限値が設定されていました。 ただ、上記はあくまで、実際に設定されている値で、それぞれのメーカーが保障している値ではありません。 SunOneのマニュアルからも最大値の記述は読み取れませんでした。(調査不足?) Q1.FOPEN_MAXの20と言うのは何に利用されているかご存知ですか?CPUにより異なる様なのですが。。 プロセスを最大数立ち上げた際にオープン出来るファイルの最大数と言う事なのしょうか? Q2.コンパイラごとに異なるものなのでしょうか?OSやCで決まるものなのでしょうか? 何を基準に(c?solaris?コンパイラ?)マックス値を調査すればよいのでしょう? Q3.漠然とした質問で申し訳無いのですが、上記の様なファイルオープン数のメーカーからの保障について、どなたかご存知ですか? 以上、拙文で申し訳ないのですが、ご存知の方ご教授下さい。 |
質問は受け付けないって書いてあるのに、変わった人たちですね。 まぁいいですけど。 > Q1.FOPEN_MAXの20と言うのは何に利用されているかご存知ですか? Solaris8 の stdio(3) には以下のように記述されています。 The integer constant FOPEN_MAX specifies the minimum number of files that the implementation guarantees can be open simultaneously. JIS X 3010 (C99 相当) には以下のように記述されています。 FOPEN_MAX は、同時にオープンできることを処理系が保証するファイル 数の最小値をあらわす整数定数式に展開する。 なお、FOPEN_MAX は最大値ではなく最小値です。「少なくともこれだけは オープンできる」という値です。 FOPEN_MAX が具体的にどう使われているか、という話であれば、処理系 依存です。たとえば FreeBSD であれば libc において static FILE usual[FOPEN_MAX - 3]; などと使われており、リソースを確保しなおすことなくオープンできる ファイル数が FOPEN_MAX である、という形になっているようです。 Linux などで使われている glibc においては FOPEN_MAX を一切使用して おらず、意味のない値になっています。Solaris はソースを持ってないので 知りません。 > Q2.コンパイラごとに異なるものなのでしょうか?OSやCで決まる > ものなのでしょうか? 何がですか? FOPEN_MAX が? > Q3.漠然とした質問で申し訳無いのですが、上記の様なファイルオープン数の > メーカーからの保障について、どなたかご存知ですか? 「保証する値」にこだわるのであれば、メーカーに問い合わせるのが 一番かと思います。 |
http://x68000.q-e-d.net/~68user/net/http-auth-2.html にある「クライアント対応状況」ですが、apache本体(2.0.51以降)に パッチが取り込まれています。 http://httpd.apache.org/docs-2.0/mod/mod_auth_digest.html#msie ご参考まで。 いつも勉強させてもらってます。 これからもすばらしいコンテンツ期待しています。 |
Solaris8のshについて教えて下さい。 shでシェルを書いています。 もともとは、HP-UX11.00で動かしていたのをSoralisに移しました。 位置パラメータを使ってlsの結果(個数)を取得し、ファイルが存在 しているか、存在しないかのチェックをしています。 ファイルが存在しないときは、不要なメッセージを出力しないように もしています。 その際、ファイルが存在しなった場合、0件として終了してくれません。 位置パラメータの個数が"1"で取得されます。 引数で、チェックするディレクトリを判断するためのパラメータを渡して いるのですが、どうやらこの引数や値が引き継がれているみたです。 上手く処理するにはどうしたらよいのですか。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー #!/bin/sh # PATH=${PATH}:/usr/bin:/etc:/usr/ccs/bin:/usr/local/bin:.; export PATH TZ=JST-9; export TZ if [ $# -lt 1 ] ; then echo "Parameter Error" echo "$0 Processing MODE [R:real/B:batch]" exit 1 fi mode=$1 if [ ${mode} = "R" ] ; then DIR="/tmp/real" elif [ ${mode} = "B" ] ; then DIR="/tmp/batch" else echo "Processing MODE Error" echo "Processing MODE = [R:rela/B:batch]" exit 1 fi cd ${LDIF_DIR} set -- `ls *.txt 2>/dev/null | grep -v "_kekka_"` if [ $# -eq 0 ] ; then echo "Ldif File Nothing Today" exit 1 fi echo $* cnt=$# echo ${cnt} |
>>4105 tkb > 「クライアント対応状況」ですが、apache本体(2.0.51以降)に > パッチが取り込まれています。 これは知りませんでした。早速追記しました。 http://x68000.q-e-d.net/~68user/net/http-auth-2.html ご教示ありがとうございました。 |
>>4106 さいさん > 引数で、チェックするディレクトリを判断するためのパラメータを渡して > いるのですが、どうやらこの引数や値が引き継がれているみたです。 位置パラメタは「set --」でクリアできますが、本当に引数を引き継いでいますか? (「echo $*」部分で引数が出力されてますか?) |
>>4108 zsh >(「echo $*」部分で引数が出力されてますか?) 起動時に渡した、RまたはBが表示されます。 「echo #?」も1と表示されます。 |
「UNIX の部屋」を更新しました。 http://X68000.q-e-d.net/~68user/unix/ |
>> 4109 #!/bin/sh -> #!/bin/ksh man sh man ksh |
>>4112 zsh Solaris8入ってるマシン3台くらいで確認したんですけど shでも通常はそんな動作にはならないんですよ。 一度 set -- でリセットした方が確実かなと思います。 |
× >>4112 zsh ○ >>4111 んー 失礼しました。 |
Tee の説明文中 find . -name a\* だと a から始まるファイル名が返って来ますよね. |
>>4112 zsh >一度 >set -- >でリセットした方が確実かなと思います。 とやってみたんですが、かわりなしです。 |
>>4114 野暮天 ご指摘ありがとうございます。修正しました。 http://X68000.q-e-d.net/~68user/unix/pickup?Tee |
>>4115 さいさん じゃあshiftで一つずらしてください。 |
質問はダメみたいですが、どうしてもできないので、誰か教えてください。。 http://x68000.q-e-d.net/~68user/net/pop3-1.html を実際にやってみたんですが、 POP3サーバ名、ポート番号で、接続できました。 そして、USERも接続できたんですが、PASSだけが接続できません。 ちゃんと手順通り(パスは合ってる)にやっているんですが、、なぜでしょうか? 誰か教えてください。POP3サーバー名は、pop.mail.yahoo.co.jpです。 エラー内容は、-ERR invalid user/password もう1個えらー内容がでました。 -ERR command valid only in authorization state. |
>>4118 ヘルプ 私は Yahoo! のメイルアカウントを持ってないので何ともですが、 http://help.yahoo.co.jp/help/jp/mail/pop/pop-03.html を参考にしてありがちなミスを考えると、USER 名が小文字になってないとか。 |
ネットワークプログラミングの基礎知識 http://X68000.q-e-d.net/~68user/net/ に Java で HTTP クライアントを作ってみよう (1) http://X68000.q-e-d.net/~68user/net/java-http-socket-1.html Java で HTTP クライアントを作ってみよう (2) http://X68000.q-e-d.net/~68user/net/java-http-url-connection-1.html Java で HTTP クライアントを作ってみよう (3) http://X68000.q-e-d.net/~68user/net/java-http-url-connection-2.html を追加しました。 |
>>4117 zsh 原因わからずです。 バグということはないですかね。 >じゃあshiftで一つずらしてください。 shiftとって使ったことないのですが、 ループと合わせてつかうものなのですか。 終わりとかどう判断するのですか。 使い方教えてください。 |
Solari8iについて教えて下さい。 UNIXにログインする時、共通のデフォルトの初期化ファイルと ユーザのホームディレクトリにある初期化ファイルが読み込まれ ますが、共通のデフォルトのファイルはどこにあるのですか。 sttyの設定を変更したいのですが、分からずに困ってます。 syslogのファイルはどこに存在するのですか。 HP-UXでいるsyslogというファイルは存在しないのでしょうか。 messageというそれらしいファイルが存在するのですが、これが syslogなのでしょうか。 Solarisでいうsyslogとはどこを含めているのでしょうか。 |
>>4121 さいさん num=`ls *.txt 2>/dev/null | grep -v "_kekka_" | wc -l` でファイル数を取得では。 |
皆さんmanコマンドって使わないんですかね・・・ >>4122 たか Solari8iって一体・・・ Bシェル・・・/etc/profile Cシェル・・・/etc/.login man shとかで出てきます。 >>4121 さいさん 例えば、位置パラメタが $1=a, $2=b, $3=c の時にshiftを実行すると $1=b, $2=c と一つずつずれます。 $#の値も一つ減るので、対処できるかなと。 取りあえず、man shift |
ネットワークプログラミングの基礎知識 に SSL/TLS の導入 (1)〜(4) http://x68000.q-e-d.net/~68user/net/ssl-setup-1.html http://x68000.q-e-d.net/~68user/net/ssl-setup-2.html http://x68000.q-e-d.net/~68user/net/ssl-setup-3.html http://x68000.q-e-d.net/~68user/net/ssl-setup-4.html を追加しました。 |
libevent http://www.monkey.org/~provos/libevent/ について 調べているんですが、いまいちわかりません。 マルチスレッドの echo サーバのサンプルプログラム http://x68000.q-e-d.net/~68user/tmp/libevent-sample.c を作ったのですが、1つ目のクライアントからの接続は正常に処理できる ものの、さらに 2つ目のクライアントが接続すると sockread_callback 内の if ( fd == listening_socket ){ が真にならず、accept できません。 1つ目のクライアントが接続してきたときに sockread_callback 内で 行っている event_add・ev_set のやり方がまずいんだろうと思うん ですが、どこが間違っているんでしょうか。 |
そういえばこの掲示板で質問を受け付けていないことを忘れて いました。管理人が自分でルールを破るのはよくないので、 >>4126 68user は無視してください。 |
社会暦1ヶ月のものです。LINUX関連仕事をやってます。 偶然、このサイトを見つけていろいろ助かりました。 ありがとうございます。 これからもよろしくお願いします。 |
すいません、場違いだとは思うのですが、GlancePlusについて、 御存知の方がいらっしゃいましたら教えていただけないでしょうか? 現在業務上でGlancePlusをつかっての性能測定をしているのですが、 この結果を『-p』オプションでファイルに出力していると、 「Maximum of 200 pages of output reached, printing disabled」 と出てきて、200回目の出力でストップしてしまいます。 MAX200の出力が、GlancePlusの仕様という事ならあきらめるのですが、 設定ファイルor設定方法等があるのでは?と思っています。 どなたか教えて下さい。 よろしくお願い致します。 |
いつのまにか私が使っているAIXでログイン後共通ディスク端末エミュレータを選ぶと 「アクション "Dtterm" が見つかりません」で端末エミュレータが開けなくなり、 ログアウトしようとすると「アクション "ExitSession" が見つかりません」でログアウト できなくなっていました。いつもはTelnetで処理をしていてLogin,Exit等を行っても なんの問題もありません。原因を考えるのですが心当たりないので困っています。 気がかりなのは/varの使用率が100%になっているくらいですが以前はそれでもちゃんと 動いていました。対策方法をご存知のかたはご伝授ください。 |
>>4130 よっちゃん 「AIXでログイン後」とはCDEログイン(?) と仮定して... > /varの使用率が100% ネタですか? CDEは/var/dt以下を使用します。 まず/varのディスクスペースを確保しなきゃです。 ※そのまま放置するとCDEからのloginそのものが出来なくなります。 |
WAS上のアプリケーションから起動された unixコマンドをkillしたいのですが、 1発でできる方法はないでしょうか? 分けると、 ”ps -eaf | grep java” で 1:root 323700 1 0 14:41:32 pts/2 4:37 /XXXX/XXXX/XXX を取得して、 ”ps -ef | grep vmstat” で 1:root 430138 442550 1 20:19:55 pts/2 0:00 grep vmstat 2:root 524402 323700 0 19:31:41 pts/2 0:00 /bin/vmstat 1 ↑と取得できた場合に、親のPIDに323700を持っているコマンド (2行目)をkillする、ということをやりたいのですが・・・。 やっぱり分けないと無理でしょうか? |
Solaris8なのですが、Bシェルでnawkを使用して処理を しています。 nawk内で関数を呼び出して処理をしているのですが、 その際、最終レコードかをNFで判断しているのですが、 上手く、判断してくれずに無限ループになってしまい ます。 #/bin/sh for FILE in `ls *.txt"` do nawk -F" " ' BEGIN { count = 0+0 ; } function sub() { while (NF>0) { if ($1 == "") { 処理 } else { 処理 } getline ; } return 0; } { if (NF == 0) next ; ret=sub() ; } END { printf("%d\n",ret) ; }' ${FILE} done |
>>4133 仁 NFはフィールド数が格納されるのであって 最終レコードかどうかを確認する事はできないと思いますが。。。 こういうことがしたいのですか? ------ while ( getline ) { ... } |
お世話になっております。初心者で大変申し訳ございませんが、 教えていただけますでしょうか? 以下の https-client-2 で、ライン:362 SSL_get_verify_resultで エラーと扱われてしまいます。対象となる rootCA 証明書をどのように 反映すれば宜しいのでしょうか? http://x68000.q-e-d.net/~68user/net/ssl-2.html 申し訳ございませんが宜しくお願い致します。 |
>No. 4135 に追加で、中間認証局の証明書はどのように設定するのでしょうか? または、必要ないのでしょうか? 度々申し訳ございませんが宜しくお願い致します。 |
>>4135 kevin そのページは書きかけでわかりづらいため、それについてのみ説明します。 > 対象となる rootCA 証明書をどのように反映すれば宜しいのでしょうか? ページ最下部に記述してあります。 なお、https://www.rsasecurity.com/ は成功しますが、 https://www2.ggn.net/cgi-bin/ssl は期限切れのため必ずエラーと なります。 その他については SSL/TLS の一般的なことがらなので回答しません。 OpenSSL の本を買うとよいでしょう。 |
>>4070 たなか >>4071 68user >>4072 たなか ご無沙汰しております。 Apple に連絡後、返事はもらえませんでしたが、進展がありましたのでご報告いたします。 Mac OS 10.4(Tiger) で kqueue の戻り値(ファイルデスクリプタ)を close できるようになりました。 |
トップページについて、ご自分でも感じてらっしゃるかと思うのですが…。 ぼちぼち更新履歴が長くてアレな気がするので、できればトップは最近の いくつかだけにして、過去のぶんは別ページに、とできないでしょうか。 # それともCGI/Servletでblogを作ってからにしようとしてるとか?(^^) |
>>4139 has 手前味噌ですが、 http://www3.to/henika/browsers/ (http://thunder.prohosting.com/~henika/japanese/browsers.shtml) みたいに、最近の数個を上に、それ以降を後ろに持っていくと、ファイル1個内に閉じたカット&ペーストで済ますことができます。 #他人様のサイトですので、あくまでも1例を提案させていただいている、という程度の意見でございます。 |
参考にさせていただいております。 ご質問があるのですが、OpenSSLをインストールした状態のPC(A、B、C)で HTTPS通信とHTTP通信を使い分けるということは可能なのでしょうか。 (A-B間はHTTPでA-C間はHTTPSでといった具合です。) 現在手元に環境が無いためテストすることができずに困っております。 誠に申し訳ありませんが、ご存知の方がおられましたらご教示しては頂けないでしょうか。 |
カンマで区切られたデータのある位置にある内容と同じ ものが他のレコードに存在しなかチェックを行い、存在 した場合、それぞれのレコード番号を出力したいのですが どのよにすれば上手くできますか。 -- ファイル ----- 001,みかん,N001,N,Y,10,, 002,りんご,N002,Y,N,30,, 003,ばなな,N003,Y,Y,20,, 004,ジュース,N001,N,N,,, 005,いちご,N004,,,,, 006,なし,N004,,,,, 007,かき,,,,,, 008,くり,,,,,, --- 結果 ----- 1行目と4行目 5行目と6行目 ただし、必ずしも設定されているとは限らずNULLの場合も あります。 環境は、Soralis8、Bシェルです。 考えとしては、 #!/bin/sh # FILE=file.csv while read LINE do val=`echo ${LINE} | cut -d , -f 3` nawk -v KEYWORD=${val} =F"," ' ' ${FILE} done < ${FILE} と思ってはいるのですが。 |
こんにちは〜^^ ネットワーク関係のソフトウェアをC言語で作っているんですけど WAN側のIPの調べ方がわからなくて困ってます>_< 簡単にでいいので、教えていただけると助かりますm(_ _)m |
>>4138 たなか なるほど、バグでしたか。ご連絡ありがとうございました。 >>4139 has >>4140 へにか ご意見ありがとうございます。トップページから「古い更新記録」に 移動するのをさぼっていただけなので、遅ればせながらごそっと移して みました。 |
初めまして、高橋です。 突然で申し訳ありませんが、とても困っています。解決方法をご存知の方がいらっしゃいましたら教えてください。 solarisでcronでシェルを起動する際に自分自身が立ち上がっていないかのチェックを行っています。 下記「(1)コマンド」で立ち上がっているプロセス件数をチェックしているのですが、稀に「(2)実行結果」の様な結果が返ってきて件数を正しく判定できません。 ※本来は(2)の一行目のみで、一件と返ってくる。 「(1)コマンド↓」 set PRCCOUNT = `ps -efl|grep ${PROGRAM_FILE}|tee aaaa.grep|wc -l` 「(2)実行結果↓」 8 S sm 2136 2128 0 60 20 ? 212 ? 19:45:36 pts/15 0:00 /bin/csh -f ABC.csh ABC 8 R sm 2128 1704 0 70 20 ? 212 19:45:36 pts/15 0:00 /bin/csh -f ABC.csh ABC Rステータスが実行待ちという事らしいのです。``で子プロセスが立ち上がる弊害のようです。 何か自分が起動していない事を確認する良い方法はないのでしょうか? ご存知の方ご教授下さい。 |
ps -efl の結果を中間ファイルに記録する様にすれば、ps 実行時に `` を 使わなくて済みますよね? 駄目? |
あまり深い意味はないのですが、なんか頭をぐるぐるしているので、 もし気が向いた方がいればご意見聞かせてください。 この掲示板の送信ボタンのすぐ下には 「UNIX・ネットワークに関する一般的な質問」 っていうくだりがあります。 この言葉に限らず、言葉には前置きを付けると、意味合いがいろいろ変化する ということはわかっているのですが、例えば単純にこの部分だけを見た場合、 これは一体どういった捉え方ができるんでしょうか。 さっき思いついてちょっと考えていたのですが、フレーズだけが響いてしまい、 もはやちっとも考えが前に進みません。 |
>>4147 has >例えば単純にこの部分だけを見た場合、 >これは一体どういった捉え方ができるんでしょうか。 ここが良く理解できなかったのですが、いかなる状況での 「単純にこの部分だけ」と言うことでしょうか? 送信するとき? それとも読むとき? はたまたもっと違う状況? >なんか頭をぐるぐる 余談ですが、僕なんか、毎日のように頭がぐるぐるしてます。 この件じゃなくて色々ですが。 ぐるぐるすると、辛いですよね。どうか、ご自愛ください。 |
> >例えば単純にこの部分だけを見た場合、 > >これは一体どういった捉え方ができるんでしょうか。 > > ここが良く理解できなかったのですが、いかなる状況での > 「単純にこの部分だけ」と言うことでしょうか? 『UNIX・ネットワークに関する一般的な質問は受け付けていません』と 明記してあって、なおかつ『当ページの内容に関するご意見・ご指摘は 歓迎します。』なんだから typo の指摘や記事の内容から発展させて 一定レベル以上のネタの窓口に決まってるやん...っていうのを暗に 言いたかっただけとチャウんかと. > 僕なんか、毎日のように頭がぐるぐるしてます。 私なんて頭だけでなく, 腹の方までグルグルしてます. 呑み過ぎて腹出して寝てるせいなのか, 神経性なのか 両方に心当たりがあって困ったモンです. |
>>4149 hoge >一定レベル以上のネタの窓口に決まってるやん...っていうのを暗に >言いたかっただけとチャウんかと. なるほど。でも、その意図は汲み取り難いのかもしれません。むしろ、 「一般的な」という一文が、「特殊な」との対となし、自分の質問が 一般的ではなく、ごくごく限られた状況ならOKとみなされているのか もしれません。 例えば、「shってなんですか」は一般的で、「これこれこういう時は どうなんですか」は、そうではない、という捉え方をされているのか も知れません。 と言うことで、僕は「UNIX・ネットワークに関する質問は受け付けて いませんが、当ページの内容に関するご意見・ご指摘は歓迎します。」 と書き換えたほうが良いと提案します、という結論に落ち着きました。 >神経性なのか 心療内科の受診をお勧めします。相性が合うDr.が見つかれば良いですね。 |
わたしが思うに、以下の 3パターンに分類されると考えています。 パターン1: そもそも注意書きを読んでいない。 パターン2: とても困っているので、回答をもらえる可能性は低くても質問しておこう、と思っている。 実際に誰かが答えてくれる場合もあるため、あながち間違った作戦とは言い切れない。 パターン3: 自分の質問が「一般的な質問」であると認識しておらず、「特殊」なものである、 と考えている。4150 での考察に同じ。 >>4150 へにか > と言うことで、僕は「UNIX・ネットワークに関する質問は受け付けて > いませんが、当ページの内容に関するご意見・ご指摘は歓迎します。」 別に質問されて困っているわけではないのですが、せっかくなのでご提案の とおりに書き換えてみました。 > 頭がぐるぐるしてます。 最近日本酒を飲みだしたため、毎日頭がぐるぐるしています。4日で一升空けるのは 飲みすぎなんでしょうかね。 |
皆さん、私のしょうもない書き込みにつきあっていただき ありがとうございます。 >>4148 へにか >>4149 hoge ご指摘の通りです。 もっと平和に表現できればよかったんですが、私には無理でした。 スミマセン。 >>4150 へにか そうですね。私もそれなのかなぁ、と思っていました。 >>4151 68user 具体的に表現してもらうと確かにそんな気がします。 >別に質問されて困っているわけではないのですが そ、そうでしたか…。 >4日で一升空けるのは飲みすぎなんでしょうかね。 健康診断とかではよく、1日1合まで、と言われますよ。 そのうちまた、新潟のおいしいお酒が飲めるよう、体には気をつけましょう。 |
>>4151 68user > せっかくなのでご提案のとおりに書き換えてみました。 リンクに関する注意書きの所にも『一般的な』が有りますね. > 4日で一升空けるのは飲みすぎなんでしょうかね。 一瓶なら大丈夫でしょうけど, そのペースで空き瓶を大量生産してるなら 少しペースを落とした方が良いかも知れませんね. そんな事言ってる私の部屋には空き缶が大量発生してますけどね. >>4152 has > もっと平和に表現できればよかったんですが 充分に平和的だと思っています. 『チャウんかと.』のくだりは吉野家コピペ風に書きたかったってだけで 他意は有りません. |
>>4151 68user 採用いただき、恐縮です。 確かに、読んでいない、というパターンが一番多いと思いますが、 こういうのも、httpのヘッダ解析でできたらいいのにな、と、 ふと思いました(素面なのに)。 >>4152 has >>別に質問されて困っているわけではないのですが >そ、そうでしたか…。 上に同じ・・・ >>4151 68user >>4152 has お酒のうまさがわかるなんて、羨ましい限りです。 人生の楽しみの半分を失ってる、と言われた事があります。 ビールに換算すると、10[杯/年]かな? しかも年2〜3回:) |
>>4153 hoge う、ニアミス・・・ お酒のうまさにかんしては、同じく羨ましいですね。 >>4152 has ニアミスついでに。 >確かに、読んでいない、というパターンが一番多いと思いますが、 は、正しくは、 >読んでいない、というパターンが一番多いと思いますが、 ですね。「確かに、」は余分でした。 |
>>4152 has > 健康診断とかではよく、1日1合まで、と言われますよ。 なんと、そんなに少ないのですか。今日は日本酒は飲みませんでしたが、ビール (発泡酒・その他の雑種含む) を 3リットルほど消費しました。少し控えた方が よいのかもしれませんね。といっても控える気はあまりないのですが。 >>4153 hoge > リンクに関する注意書きの所にも『一般的な』が有りますね. ありがとうございます。明日修正します。 ちなみに、わたし個人は UNIX・ネットワークに関する質問を受け付けていませんが、 他の誰かが回答することについて邪魔をしたいわけではありません。この掲示板で 誰かが質問し、それに対して誰かが回答しても、それはアリかと思います。 ただ、そういう場を積極的に提供する気は今のところないので、引き続き「質問は 受け付けていません」と明記させていただきます。 |
>>4155 へにか >>4152 has ニアミスついでに。 は、 >>4154 へにか の、ポイント間違いです。 掲示板を汚して申し訳ありません。素面でこれなんだから、全くもう・・・ 頭がぐるぐるどころか、頭がどろどろしているのかもしれません。 |
「雑談も可」と明記してみました。 ところで、どこかにわたしの中途半端な技術力を生かせて、元請中心で、上流〜下流の どこでも口と手を出せるような社員数数十〜数百人程度の小さな会社が関東南部周辺に ないですかねぇ、とネタふりしてみたりして。 |
>>4158 68user 一件、心当たりがありますが、僕も狙っているので、ここでは公言できないです。 もし、68userさんしか投稿内容を見ることができないシステムがあれば、そちら に書き込みします。例えば、以前のアンケートシステムみたいに。 |
中途半端って、謙遜が過ぎるような気がするが... 五反田で良ければ心当たりがありますけど. |
>>4159 へにか >>4160 hoge 早速作りました。よい情報があればよろしくお願いします。 http://X68000.q-e-d.net/~68user/tmp/job.cgi |
へにかさん、hoge さん、hoge さんのお知り合いの方、ありがとうございます。 しばらく検討させてください。今後メールするかもしれませんが、そのときは よろしくお願いします。 引き続き情報をお待ちしています。 |
ネットワークプログラミングの基礎知識 http://X68000.q-e-d.net/~68user/net/ に TCP/IP エラー処理 connect 編 http://X68000.q-e-d.net/~68user/net/tcp-connect-1.html を追加しました。 ところで転職の方は、現時点で 10社ご紹介いただきました。 今、かなり悩みつつ検討中です。 まずはメールで質問させていただくことがあると思いますが、 そのときはよろしくお願いします。 |
すみません、基本的な質問してもよろしですか?友達にFTPのアドレスを教えてもらいいろいろなコピーを貰っています。こちらからからはその方に、メールなどを転送できないのでしょうか?申し訳ありません。私はまったく理解していない初心者なので。お礼のメールをしたいのですが〜 |
>>4164 mm070324 その人がみんなのために公開してるならお礼をしても差し支えないと思いますが、 個人用のデータ置き場がたまたま見えているだけなら、お礼という形は微妙だと 思います。けど、メールする方法はわかりません。 ちなみに、FTPもメールもWebも、UNIXとネットワークに関する技術の代表的存在です。 基本から頑張って理解していってください。 |
はじめまして。 UNIXの部屋をいつもありがたく使わせていただいているものです。 一点気づいたのでご報告です。 TOP >> UNIX の部屋 >> 検索 lessコマンドの解説ページ -fのオプションの解説のところで ”less でバイナリファイルを見ようとすると” の部分がテーブル内に表示されているのは正常ですか? |
>>4166 saito 正常ではないです。近日中に直します。 ご指摘ありがとうございました。 |
>>4166 saito 修正いたしました。ありがとうございました。 転職活動は少しずつ進めております。大体方向性が固まって きましたので、トップページなどからのリンクは外しました (CGI 自体は生きていますが)。情報をお寄せくださった皆様、 ありがとうございました。 |
>>4168 68user 修正ありがとうございました。 良い転職先が見つかると良いですね。 また何かありましたらご報告いたします。 |
最近お願いばかりで恐縮ですが、世の人がすなるという mixi と Gmail なるものを一度この目で見てみたいと思っています。ネット上に友達が いないかわいそうなわたしを、どなたかお誘いいただけませんでしょうか。 一時的なメールアドレス mixi-gmail-68user@q-e-d.net を作りましたので、よろしければお願いします。 >>4169 saito ありがとうございます。今後ともよろしくお願いします。 |
>>4170 68user すいません、Gmail は http://www.freebbs.biz/yy2ch/yy2ch.cgi?id=admin で取れてしまいました。 Gmail って Ajax を使った画面遷移のない web メーラーだと思ってたので一度 使ってみたかったのですが、単なる勘違いであったことがわかりました。うーむ。 |
「UNIX の部屋」を更新しました。 http://X68000.q-e-d.net/~68user/unix/ |
>>4172 68user いつもご苦労様です。 cronの欠点の一番最後の部分で > 重複起動を避けたい場合は、個々のプログラムで排他制御をする必要がある。 > で実現できる。 とあり、日本語がおかしいと思います。 後、UNIXの部屋の各ページから転職先募集のCGIへのリンクが残っているようですが これは想定通りでしょうか? |
>>4173 zsh > 日本語がおかしいと思います。 修正いたしました。 > UNIXの部屋の各ページから転職先募集のCGIへのリンクが > 残っているようですがこれは想定通りでしょうか? 想定外です。こちらも修正しました。 ご指摘ありがとうございました。 あと、へにかさんへ。 6/22 に送信したメールに対するエラーメールが今日届きました。 Sorry, I wasn't able to establish an SMTP connection. (#4.4.1) I'm not going to try again; this message has been in the queue too long. だそうです。内容は雑談なので別に構わないんですが、到達可能な メールアドレスを例の CGI 経由で教えていただければ再送いたします。 |
>>4174 68user へにかです。 例のCGI経由で、お伝えしました。お時間が許せばで結構ですので、 再送の程、宜しくお願いいたします。 |
転職活動は終了しましたので、転職先募集のページは閉じました。 最初はただの雑談のつもりだったのですが、結果的には希望通りの 転職先が見つかり、満足しています。情報を寄せていただいた みなさまには本当に感謝しております。ありがとうございました。 自分の web 上で転職活動をするとどうなるか興味があるかたも いらっしゃるかと思うので、結果を簡単に。 頂いた情報は 18日間で 17件でした。内訳は以下の通りです。 - この会社はよさそうでは?: 3件 - 知り合いがここに勤めてます: 3件 - ウチくる?: 8件 - 転職紹介サイトなど紹介: 2件 - ここはやめとけ: 1件 あと、どこかの blog で「はてなとかどう?」というコメントを 見かけました。 よかったところ、悪かったところは以下の通り。 よかったところ: - 「上流から下流まで全てを手がけたい」「自社システム開発あるいは元請」 など、希望条件を明確に提示できる。普通の人材募集のページには 「〜以下の工程を担当可能です。それより上は元請会社の仕事です」 「うちは下請けばっかりです」 なんてことは書いてない。 - 予想以上の情報が集まった (2〜3件程度かと思っていた) - 事前に web を見てもらっているので、技術面での力量をかなり正確に 把握してもらえる - まずはメールで質問できるので、情報収集には苦労しない (通常は 履歴書送付から始まるので、質問できる段階に行き着くまでが長い) - このページを見ている人は技術者が大半と思われるので、現場の 雰囲気や作業内容など、細かな情報も聞くことができる - 運がよかった 悪かったところ: - (面接に行くと) 顔バレ・名前バレ (仕方ないけど) - (転職すると) web バレ (これも仕方ない) - 大きな会社に行きたい場合は向かない (わたしは小さなところを 希望していたのでデメリットではないんですが) お返事を差し上げなかった方についてはまことに申し訳なく思って おります。勤務場所・仕事内容・会社の規模 (大きすぎる) などで 希望条件と合致いたしませんでした。なにとぞご容赦ください。 >>4175 へにか メール送ります。 |
というわけで、お礼がわりと言うのもおこがましいですが、当掲示板 での質問受け付けを再開します。痛い質問者によって精神的に疲弊 してしまったら、またクローズして充電します :-) 今後ともよろしくお願いします。 |
すみません、どなたかご教授ください。 HP-UNIXであるコマンド(シェルで起動したC)の出力結果の一部日本語出力が文字化けします。 teratermで接続していますが、teratermの設定をSJISからEUCに変更すると見えるようになります。 UNIXは元々SJISですので、 setenv LANG ja_JP.EUCを入れて実行したのですが、結果は同じです。 どなたか解決策を授けてください。お願いします。 |
ftp上のlsの挙動に関する質問です。 ftpサーバはsolaris8とsolaris10です。 (両方OS標準のftpサーバです。) クライアントはwindows98です。 solaris8に接続してlsをフルパスですると、 結果がファイル名だけ帰ってきます。 例) ftp> ls /etc 結果 vfstab しかし solaris10に接続してlsをフルパスですると、 結果がフルパスで帰ってきます。 例) ftp>ls /etc 結果 /etc/vfstab solaris10の結果をsolaris8にあわすことが出来ないでしょうか? 結果ファイルを使って後の処理をしているので違う結果になると いままで作ったプログラムを手直ししないといけないのでなんとかしたいです。 よろしくお願いします。 |
>>4178 あんどろめだ 1. C のプログラムが Shift_JIS 文字列を吐くよう修正する。普通に printf などで出力しているなら、ソースを Shift_JIS に変更して から再コンパイル (それで動作するかどうかは要検証)。 2. 出力を Shift_JIS に変換してから受け取る Ex: result=`command | iconv -f eucJP -t sjis` >>4179 シロネコ Solaris9 以降は wu-ftpd ベースらしいので、 >>3374 とーりすがり のように /bin/ls に変更してやれば変わるかもしれません (デフォルトでは /bin/ls を使っていないようなので)。それでもダメなら、ディレクトリ名を 削除する以下のような自作の ls を作って指定するとか (あまりに場当たり的 ではありますが)。 #!/bin/sh /bin/ls "$@" | sed 's|/.*/||'" あと、結果ファイル処理プログラムを書き換えないまでも、リクエストの 出し方を変えてよいのであれば - cd /etc してから ls する (まぁそれができるならわざわざ質問 しないでしょうけど) - ls /etc "| sed 's|/.*/||'" と、別プログラムをかませる (Windows98 に sed はないので適当に工夫する。ただし Windows の ftp.exe で "| ..." が効くかどうかは不明) とか。 |
>>4180 68user > #!/bin/sh > /bin/ls "$@" | sed 's|/.*/||'" 最後の " は余計でした。 |
68userさん 2の方法でうまくいきました。(iconvコマンド初めて知りました) ありがとうございました!! |
ありがとうございました。 でも、やってみましたが、 /bin/lsを変更する方法も、 自作のlsを使う方法もだめでした。 やり方が悪かったのでしょうか? |
>>4183 シロネコ FreeBSD に wu-ftpd-2.6.2 を入れて試してみましたが、そもそも > 結果がフルパスで帰ってきます。 となりませんでした。 手元に Solaris10 がないのでこれ以上はわかりません。いまさらでは ありますが、ftp サーバが wu-ftpd なのかを調べた方がよいと思います。 |
こんにちは。お世話になります。 すいませんが質問させてください。 メーリングリストサーバのfmlで、特定のアドレスから来たメールや、 特定のサブジェクトのメールをメーリングリストに流さないように したいのですが、どのようにすれば良いでしょうか。 具体的な資料があれば、教えていただけると助かります。 唐突ですいません。 |
>>4185 りゅう http://www.fml.org/software/fml/variable-list.ja.html#Section-Misc-Misc の $REJECT_ADDR http://www.fml.org/software/fml/Japanese/examples/spam_check.ph の &DEFINE_FIELD_PAT_TO_REJECT などでしょうか。 |
>>4186 68user どうもありがとうございます。 参考にして、試してみます。 |
>>4186 68user 試してみたら、うまくスパムメールを弾いてくれました。 ありがとうございました。 |
68user's page の正式なサーバ名は X68000.q-e-d.net ですが、 これまでは他の CNAME や IP アドレスを指定した場合でも閲覧 できていました。 Ex: www.usami.com/~68user/cgi-bin/wwwboard.cgi さきほどホスト名が m/^X68000\.q-e-d\.net$/i にマッチしない 場合はエラーとするよう修正しました。もし問題がある場合は 教えてください。 と言っても、問題があったらこの掲示板にはたどり着けないのですが。 # http://x68000.q-e-d.net/~68user/cgi-bin/cvsweb.cgi/public_html/.htaccess |
PHP の習作として、バグ管理ツール bugnote を作ってみました。 http://X68000.q-e-d.net/~68user/bugnote/ 自分でバグを登録して自分で直すだけの、ただのメモ代わりの ツールですが、せっかく作ったので公開します。 もし以前指摘したのに直ってない、bugnote にも載ってない、 という問題がありましたらお教えてください。 |
お世話になっています。 管理人様へ質問なのですが、プログラムなどの著作権はどうなっているのでしょうか? もし、明示されている場所があれば教えてください。 |
>>4191 無題 著作権は放棄することができないのでわたしに属しますが、ライセンスに ついては http://x68000.q-e-d.net/~68user/cgi-bin/wwwboard.cgi?log=4089 をどうぞ。近日中にわかりやすいところにも明記いたします。 |
>>4192 68user 早速の回答ありがとうございます。 プログラムを参考にさせていただきますね。 |
いまさらですが、昨日ある方に mixi に誘っていただきましたので、 >>4170 68user のメールアドレスは使えないようにしました。 |
すみませんが、どなたか『VC++(6.0)』でOpenSSLを使うための 設定法を教えていただきたいのですが…… |
>>4195 ド素人 - OpenSSL に同梱されている INSTALL.W32 を読んで、OpenSSL をビルド - プロジェクト (と言うのはどうか知りませんが) の設定で、以下の項目を追加 - インクルードパス - ライブラリパス - ライブラリ名 でいけるはずです。 |
同一PC上(UNIX)でサーバー、クライアントを作りSocket通信をしています。 send→select→FD_ISSET→Recvを行い、データのやりとりをしています。 何回かうまく送受信できるのですが、突然止まってしまいます。 sendはうまくいっているみたい(sendの返り値は正常)なのですが、 Recvをしてくれません。 netstatでSocket状態を確認すると以下のようになります。 tcp4 922 0 192.168.0.69.24019 192.168.0.69.61361 ESTABLISHED tcp4 0 0 192.168.0.69.61361 192.168.0.69.24019 ESTABLISHED tcp4 0 0 192.168.0.69.24019 *.* LISTEN どうもRecv-Qに送信されたデータが溜まっているみたいです。 色々調べてみたのですが、よく分かりません。 どなたか救いの手を差し伸べていただけないでしょうか。 |
>>4197 アメリカ在住 OS 名とソースを提示してください。 |
dblinkについての質問なのですが、dblinkで他のデータベースのテーブルと結合させる テーブルを作りたいのですが、CREATE文でFOREIGN KEYを使う事が前提となっていて、 どうやって記述すればうまくいくのかがわからず、困っています。うまくいったとして、 結合させる処理も考え付きません。 ビューを使えば結合はできたのですが、ビューはFOREIGN KEY には使えないのでだめで した。 create table DB1_T1( A1 char(3),B char(3),C char(3),primary key(A),foreign key(C) REFERENCES データベース DB2のテーブル2(C); という風にしたくて、foreign(C) REFERENCES dblink( 'dbname=DB2','select * from DB_T2') AS DB2_T2(C char(3),NAME varchar(50))(C) としてみたのですが、dbname=DB2 でエラーが起こってしまいます。 何かいい方法があればどうかお願いします。 バージョン Postgres7.3.3 |
>>4199 中川 PostgreSQL の dblink がいつのまに DB2 に対応したのかと 1時間 悩んでしまいました。 dblink は result set を返すものですが、foreign key は テーブル名・項目名を記述するものなので、無理じゃないですかね。 # Oracle なら foreign key(C) references DB_T2@dblinkname (c) # でいけそうですが。 やるなら DB1_T1 にトリガを設定して、UPDATE・INSERT・DELETE された ときに DB_T2 を見にいくとか。 |
大変早いお返事本当にありがとうございます。 とても悩んでいたので助かりました。 一番上にPostgreSQL と書くべきでした。 PostgresでdblinkとForeign keyを使うのは無理でしたか。 dblink以外を使って他のデータベースのテーブルをForeign key制約 に指定する方法はないのでしょうか? 上司に無理です。と言い切るしかないかもしれません。 |
>>4201 中川 外部キーにこだわるなら、 - 定期的に他データベースからデータを取得してローカルのテーブルに入れる - 他データベースからトリガでローカルのテーブルに反映する くらいしかないのでは、とわたしは思います。 |
大変早いお返事本当にありがとうございます。 とても悩んでいたので助かりました。 一番上にPostgreSQL と書くべきでした。 PostgresでdblinkとForeign keyを使うのは無理でしたか。 dblink以外を使って他のデータベースのテーブルをForeign key制約 に指定する方法はないのでしょうか? 上司にForeign keyにdblinkは無理です。と言ったところ、 データベースA データベースB テーブルT_A テーブルT_B A B C A B C 1 0 0 2 0 0 3 0 0 データベースAのテーブルT_Aの列E_1の選択した値だけ(1だけ や 2だけ)を データベースBのテーブルT_Bの列 Aに、INSERTする。 そのときテーブルT_Bの列BにはデータベースBのテーブルT_Cの列BをINSERT し、Cにはすきな値を入れる。 という処理をする事になりました。 dblinkとビューを使ってデータベースBのテーブルT_Bに変わるものを作れば いいと思ったのですが、selectした値をそれぞれの列に入れ込む処理が見当 たらず停滞しています。 いい案がありましたらよろしくお願いします |
>>4203 中川 - 最終的に何をしたいのか - 現状のどこが問題なのか を読み取ることができません。 |
わかりづらくて申し訳ありませんでした。 やりたい処理は テーブル1の列Aには、テーブル2の列A テーブル1の列Bには、テーブル3の列B テーブル1の列Cには、その場で作った 値をINSERTさせる という処理がした いのですが、解決策が見つかりません。 副問いで、SELECTした値をINSERTさせ ようとしたのですが、SELECTは一つし か使えないようなので複数SELECTして それぞれの列にINSERTさせるというの は無理なのでしょうか。 |
>>4205 中川 INSERT INTO T1 (A, B, C) SELECT T2.A, T3.B, 'HOGE' FROM T2, T3 WHERE (T2 と T3 に関する条件) ということですか? 手元に PostgreSQL はないので確認できませんが、Oracle では一応動きました。 |
何度もありがとうございました。大変助かりました。 SQL初心者なのでこれを機にテクニカルを身に付けようと思います。 度々すみませんが、また質問です 昨日の質問なのですが、データベースの異なるテーブル にトリガーを使って外部キーをつけるという処理を 今日一日悩んだのですが、トリガーを使ったことがなく、 少しも理解できていません。 トリガーを使って異なるデータベースのテーブルに外部キ ー制約を行う方法を教えていただけないでしょうか。 |
>>4207 中川 またそこから始めるんですか? 全然 4202 から状況が変わってないように見えますが、 4203-4206 のやりとりは何だったんでしょうか。 まぁ、それはそれとして、トリガを使う案は - DB1 にテーブル T1、DB2 にテーブル T2 がある - DB1 の T1 のカラム A には、DB2 の T2 のカラム A に存在する値しか入れたくない - しかし PostgreSQL の外部キーでは、dblink を使えないようだ - ならば DB2 の T2 と同じ内容のテーブル T2 を DB1 にも作って、そこに外部キーを設定しては - となると DB2 の T2 と、DB1 の T2 の間でテーブル内容の同期をとる必要がある - では DB2 の T2 にトリガをセットして、T2 に対する INSERT・UPDATE・DELETE が 発生したら、自動的に DB1 の T2 に同じデータを反映するようにするのがいいのでは というものです。DB2 の T2 がごくまれにしか更新されないテーブルであれば、 トリガを使う必要はないかもしれません (30分に一回 INSERT INTO SELECT で DB2 の T2 の内容を DB1 の T2 にコピーするとか)。 別の案としては、DB1 の T1 に INSERT・UPDATE がかかったときに、トリガで DB2 の T2 のカラム A を見にいって、データが存在しなかったら RAISE して エラーにする、というのもあります。 http://www.postgresql.jp/document/pg803doc/html/plpgsql-errors-and-messages.html いずれも何も試さずに言ってます。念のため。 |
皆様こんにちは。 ここはcshの質問をしても宜しいのでしょうか? sedを使ってCSVファイルをTSVファイルに変換しようとしているのですが 変換元と変換先のファイル名にシェルの引数を認識してくれません。 if ($4 == CSV) then #TSVに変換 sed -e 's/","/ /g' $LOG_DIR/$1.bad | sed -n -e 's/"//gw $LOG_DIR/$1.bad' endif アクセス権がありませんとか、オープンできませんというエラーになります。 下記のようにフルパスにすると正常に処理してくれます。 sed -e 's/","/ /g' /disk1/FNC021.bad | sed -n -e 's/"//gw /disk1/FNC021.bad' ファイル名を「`」でくくったり\でエスケープ?してみましたがダメでした。 sedを知らないので頓珍漢なことをしているのかもしれません。 有識者の皆様、助けて下さい。m(_ _)m |
すみません!!! 過去ログを眺めていて、適当に sed -e 's/","/ /g' $LOG_DIR/$1.bad | sed -n -e 's/"//gw '$LOG_DIR/$1.bad'' と’’をつけたら動いてしまいました。。 どうもお騒がせしました。m(_ _)m m(_ _)m |
>>4210 まつ 今後は #!/bin/csh -fx などと -x オプションを付けてデバッグすることをお勧めします。 |
こんにちわ。 スクリプト内1行目に-fxオプションをつければよいのでしょうか? 知りませんでした。。御恥ずかしい。 どのような結果になるのか月曜にでも確認してみます。 どうもありがとうございました! m(__)m |
UNIX の部屋を更新しました。 http://X68000.q-e-d.net/~68user/unix/ 未稿の部分が多くて恐縮ですが、書けども書けども終わりが見えないので、 いったん公開することにします。 |
はじめまして、sekiと申します。 ftpに関しまして、分からない事があり質問させて頂きます。 どなたかご存知の方おられましたら、ご教示をお願い致します。 【環境】 ・Solaris8 ・in.ftpdを使用 【問題】 ・バッチ処理にて、バーチャルIPでftpを行い、他ホストに作成された ファイルを取得する。 ネットワーク障害時や他ホストdown時、バーチャルIPが見えなくなる場合、 ftpのconnect:接続の時間切れとなるが、その場合約4分も待たされる。 【知りたい事】 ・上記のような障害時、1ノードで約4分も待たされるのは長いので、設定で 短く出来るのであれば短くしたい。 【検証】 (1) OSパラメータのtcp_time_wait_interval=240000(4分)になっていたので、 ftpがconnect_timeoutになるのは、上位のTCPのタイマーに引っかかるのでは と思い、nddコマンドにて60000(1分)にしてinetdデーモンを、kill -HUPした。 変更後、バーチャルIPが見えないHostに対しftpを行なったが、以前4分で ftp_connect:接続の時間切れとなる。 (2) /etc/inet/inetd.confの、ftp記述部分を下記のように-tオプションにて タイムアウトを設定し、inetdデーモンを、kill -HUPした。 こちらも変更後、バーチャルIPが見えないHostに対しftpを行なったが、 以前4分でftp_connect:接続の時間切れとなった。 ftp stream tcp6 nowait root /usr/sbin/in.ftpd in.ftpd -t20 -l -d ※ 下記のURLを参考にさせて頂きましたが、FTPクライアントがFTP サーバに PORTコマンドを投げて応答なしで、データ用コネクションも張れない場合は どこの設定でクライアントはtimeoutを判断するのでしょうか? 私の推測のようにTCPに依存するものなのでしょうか? http://x68000.q-e-d.net/~68user/net/ftp-1.html |
はじめまして、sekiと申します。 ftpに関しまして、分からない事があり質問させて頂きます。 どなたかご存知の方おられましたら、ご教示をお願い致します。 【環境】 ・Solaris8 ・in.ftpdを使用 【問題】 ・バッチ処理にて、バーチャルIPでftpを行い、他ホストに作成された ファイルを取得する。 ネットワーク障害時や他ホストdown時、バーチャルIPが見えなくなる場合、 ftpのconnect:接続の時間切れとなるが、その場合約4分も待たされる。 【知りたい事】 ・上記のような障害時、1ノードで約4分も待たされるのは長いので、設定で 短く出来るのであれば短くしたい。 【検証】 1 OSパラメータのtcp_time_wait_interval=240000(4分)になっていたので、 ftpがconnect_timeoutになるのは、上位のTCPのタイマーに引っかかるのでは と思い、nddコマンドにて60000(1分)にしてinetdデーモンを、kill -HUPした。 変更後、バーチャルIPが見えないHostに対しftpを行なったが、以前4分で ftp_connect:接続の時間切れとなる。 2 /etc/inet/inetd.confの、ftp記述部分を下記のように-tオプションにて タイムアウトを設定し、inetdデーモンを、kill -HUPした。 こちらも変更後、バーチャルIPが見えないHostに対しftpを行なったが、 以前4分でftp_connect:接続の時間切れとなった。 ftp stream tcp6 nowait root /usr/sbin/in.ftpd in.ftpd -t20 -l -d ※ 下記のURLを参考にさせて頂きましたが、FTPクライアントがFTP サーバに PORTコマンドを投げて応答なしで、データ用コネクションも張れない場合は どこの設定でクライアントはtimeoutを判断するのでしょうか? 私の推測のようにTCPに依存するものなのでしょうか? http://x68000.q-e-d.net/~68user/net/ftp-1.html |
>>4215 seki > tcp_time_wait_interval=240000(4分)になっていたので、 tcp_time_wait_intrval は TIME_WAIT な時間を設定するものなので、 関係ありません。 http://docs.sun.com/app/docs/doc/816-0607/6m735r5ga?a=view > ftp stream tcp6 nowait root /usr/sbin/in.ftpd in.ftpd -t20 -l -d タイムアウト設定をしたいのは ftp であり、ftpd ではないので 関係ありません。そもそもネットワーク障害や他ホストが down して いるのであれば、ftpd まで行き着いていません。 今回設定したいのは、 http://X68000.q-e-d.net/~68user/net/tcp-connect-1.html における connect のタイムアウト時間と思われますが、OS の設定で 変更できるかどうかは知りません。ただし、普通は OS の設定は変更 しません。たとえば今後、 - FTP 接続だけは 10秒でタイムアウトさせたい - それ以外のプログラムでは 4分待たせたい というときにどうしようもなくなるからです。 対策としては、 - ftp に -T [タイムアウト秒数] オプションを付ける (試していませんが) - ftp の前に ping してみる (タイムアウト秒数を指定) - 監視用プロセスをたて、一定時間反応がなければ ftp を kill する てな感じでしょうか。 |
>>4216 68user > たとえば今後、 > - FTP 接続だけは 10秒でタイムアウトさせたい > - それ以外のプログラムでは 4分待たせたい > というときにどうしようもなくなるからです。 → 誠に早急なご返答、及びご教示の程、ありがとうございます。 上記の返答、ごもっともです。 - ftp に -Tをつけるのは、一つの手だと思いますが、APLに手を 入れる事なく設定変更で済ませれるのであれば済ませたいです。 申し訳ございませんが、ftpのソースコードなどは開示されていないので しょうか?? (4分でタイムアウトするという事は必ずどこかを見て判断しているはずですので ソースにじか書きしている可能性もある?かと思われるため確認したいです。) |
>>4218 seki 横からすみません. ftpのポート21でconnectできるかチェックするPerlスクリプトを 書いてみました.試していただけますか? use Socket; $SIG{'ALRM'} = sub { close(SOCK); $sTimeout='(timeout)'; }; # ConnectTest(IPアドレス,ポート,タイムアウト秒数) if (!&ConnectTest('192.168.x.x',21,5)){ print "cannot make a ftp connection.\n"; exit; } # 正常ならばftpコマンドを実行 system ('ftp hogehoge'); exit; sub ConnectTest { local($sIP,$nPort,$nTimeout)=@_; local($iaddr,$paddr,$flag,$protoTCP,$sTimeout); $iaddr = inet_aton($sIP) || die "no host: $sIP"; $protoTCP = getprotobyname('tcp'); $paddr = sockaddr_in($nPort, $iaddr); $flag=socket(SOCK, PF_INET, SOCK_STREAM, $protoTCP); if (!$flag){ goto J1_1; } $flag=0;$sTimeout=''; eval { alarm($nTimeout); $flag=connect(SOCK, $paddr); alarm(0); }; if (!$flag){ goto J1_1; } if ($sTimeout){ goto J1_1; } close (SOCK); return 1; J1_1: close (SOCK); return 0; } |
>>4218 seki > ftpのソースコードなどは開示されていないのでしょうか?? Solaris8 のソースは配られていたかどうかは忘れましたが、いずれにせよ ソース中には 4分という記載はありません (見てませんが)。connect(2) の タイムアウトを決めるのはカーネルの仕事です。 で、 http://www.kt.rim.or.jp/~ksk/sock-faq/unix-socket-faq-ja-3.html#ss3.5 によると、 # ndd -set /dev/tcp tcp_ip_abort_cinterval 180000 で変更可能なようです。 > APLに手を入れる事なく設定変更で済ませれるのであれば済ませたいです プログラムに手を入れるよりもカーネルの設定を変える方がよいというのは 間違った判断だと思います。 まぁ客や上司の意向とか、ソース触ったら契約がどうこうとか、世の中には うっとうしいことがいろいろあるので別にいいですが。 >>4219 Netboy ウチの環境では動きました。 |
usen-221x242x135x85.ap-US01.usen.ad.jp (221.242.135.85) の方、 /~68user/net/sample/http-auth/secret.html に 21分間で 25万回アクセスするのは、ぜひともやめていただきたい。 って言っても、どうせ見てないんだろうし、deny したところでおそらく動的に IP アドレスを振ってるだろうし、こういう輩はどうしたらいいんですかねぇ。 |
>>4221 68user いや、もう、それは管理部門に連絡するのが良いでしょう。 満足いく内容かどうかはともかく、大抵は何らかの返答はありますよ。 #釈迦に説法のような気がしてなりませんが。 |
>>4222 へにか なるほど、そういうものですか。usen ならここらへんでしょうか。 http://www.fttx.co.jp/jp/contact/abuse.html ただ、マシンが落ちるなどの実害はなかったことと、usen の web によると 実名を書けだの、仲介しかしないだの、めんどくさそうなので今回は 放置します。 ちなみに「どうしたらいいのか」というのは技術的な解決方法はないですかねぇ、 という意味でした。たとえば一定時間に指定の閾値を超えた IP アドレスは deny するような apache のモジュールがどこかにありそうですよね。 というわけで探したらありました。 http://www.netnice.org/pukiwiki.php?%B4%FB%C2%B8%A4%CEApache%A5%C8%A5%E9%A5%D5%A5%A3%A5%C3%A5%AF%C0%A9%B8%E6%A5%E2%A5%B8%A5%E5%A1%BC%A5%EB まぁほんとにしつこくやってくるようなら usen ごと deny するので 別にいいんですけどね。 |
あぁ、技術的な話でしたか。 それに似た話は、某掲示板群で話題になってますね。 http://qb5.2ch.net/operate/kako/1113/11135/1113508190.html http://qb5.2ch.net/test/read.cgi/operate/1113647422/ しつこいクローラー&過剰リロード対策についての議論です。ご参考までに。 因みに、他の業者に対しては本名を名乗ったことはありません(へにかのまま)。 usenも変な話で、被害をこうむったほうの名前は聞くけど、被害を出したほうの 名前は出さないっていうことですよね? その辺を突っついてみると、なんらか の回答が出るかもしれません。・・・が、放置されるとの事ですので、補足意見 とさせてください。 |
"ネットワークプログラミングの基礎知識"等にある サンプルプログラムのライセンスはどうなっているのでしょうか? |
>>4222 へにか 危ない その輩は server:os-ns01.usen.ad.jp address:61.122.127.122 name:221x242x135x85.ap.221.ftth.ucom.ne.jp address:221.242.135.85 私は server:os-ns01.usen.ad.jp address:61.122.127.122 name:******* address:61.116.228.135 なんですけどサーバーが同じだと危ないのですかね? |
>>4225 mmm 過去ログ読んでから質問した方がいいですよ。 ライセンスについては >>4089 68user にあります。 |
すいません、質問させてください。 UNIX上で、ファイルをmac用にstuffit形式に圧縮できるツールを探しているのですが、 ありますでしょうか。 |
素人ですが質問させてください。 solaris9 cにて開発しています。 クライアントサーバ間を常駐プロセス1:1(クライアント1、サーバ1プロセス)にて TCP/IPソケット通信しようと考えています。 1接続毎にconnect/closeするのではなく、常にconnectionし続けようと考えています。 そこで、質問ですが、通信中にサーバ側がなんらかの理由により切断された場合、クライアント側は connectからやり直す必要があるのでしょうか? それともsendを行えば内部的にconnectを行って、sendしてくれるんでしょうか? 質問が下手ですみません。 |
環境はSunOS 5.8です。 ------------------------ #!/bin/csh -fx setenv LANG ja_JP.PCK ・・・ ------------------------ というrootから起動されるshellスクリプトを実行すると (あるバッチ処理管理ソフトを使って起動するとrootから起動されるのです) setenv LANG ja_JP.PCK Locale could not be set properly というエラーになってしまうのですが、何故か分からず困っています。 助けて下さい。 m(_ _)m telnetでuser01でログインしてsetenvを実行すると LANG=ja_JP.PCK となっていますが、上記スクリプトにsetenvを記述すると LANGは表示されません。 スクリプトにsetenv LANG ja_JP.PCKを記述しないと echo チェックリスト作成処理(/disk1/hoge/hoge01/sh/AAA001.csh) 開始 Unmatched ` というエラーになります。 telnetでuser01でログインして実行するとsetenv LANG ja_JP.PCKが なくても正常終了します。 どうぞ宜しくお願い致します。 |
>>4226 匿名 > なんですけどサーバーが同じだと危ないのですかね? う〜ん、僕には力不足で答えられないです。ところで危ないって、どういう局面を想定されていますか? しかし、その輩、ftth.ucom.ne.jpって、FTTH! うらやましいなぁ。そんな贅沢な帯域があるんだったら、有効に使ってほしい今日この頃です。 |
>>4224 へにか なるほど、そちらも参考にさせていただきます。 >>4226 匿名 > server:os-ns01.usen.ad.jp というのは、あなたが使用している DNS サーバが os-ns01.usen.ad.jp であることを示しているだけです。普通は、どの IP アドレス・FQDN に ついて正引きや逆引きをしても、「server」の部分は変化しません。 >>4228 りゅう シェアウェアっぽいですが、 http://www.stuffit.com/unix/index.html など。あと、 http://www.asl.ee.meisei-u.ac.jp/kaken/stuffit.j.html によると netatalk にも含まれているとか。 >>4229 しず > connectからやり直す必要があるのでしょうか? コネクションが切れた場合は、connect しなおす必要があります。 >>4230 まつ よくわかりませんが、手元の Solaris8 でも同様の結果になりました。setenv が 呼ばれると、シェルは putenv(3) するだけではなく setlocale(3) あたりも呼ぶ 必要があるような気がしますが、Solaris8 の csh はそこの処理にバグがあるのでは ないかと思います。 csh をやめて sh・tcsh・ksh などに切り替えるか、あるいは #!/bin/sh exec env LANG=ja_JP.PCK 実行したいスクリプト名 というような wrapper スクリプトをかませてはどうでしょうか。 |
>>4232 68user 他のサーバー(同じくSunOS5.8だったはずです)では同じように rootから実行できているのです。何かが違うのでしょうね。。 両サーバーのrootの環境を比較するなりしてみます。 #サーバー管理者へ依頼する必要があるのですが・・・ 社内の人より下記で逃げられるという指摘もありました が、他サーバーで出来ているので腑に落ちません。 ----------------------------- unsetenv LC_ALL setenv LANG ja_JP.PCK setenv PATH .:$PATH /usr/bin/env set echocmd=/usr/bin/echo $echocmd 'チェックリスト作成処理($0) 開始' ----------------------------- それでも分からなければwrapperスクリプトをかませてみます。 他に何かありましたらご教示下さい。 |
>>4233 まつ > が、他サーバーで出来ているので腑に落ちません。 想像ですが、OS インストール時に ja_JP.PCK を選択すると うまく動くのかもしれません。 |
>>4233 まつ 問題のあるサーバだけLC_ALLが設定されていませんか? localeコマンドの結果を比較してみてください。 どちらのサーバでも設定されているのであれば 導入されているロケールパッケージ(?)の差だと思います。 |
>>4235 zsh お察しの通り、問題のあるサーバだけLC_ALLが設定されていました! --動かないサーバー----------- LANG= LC_CTYPE="C" LC_NUMERIC="C" LC_TIME="C" LC_COLLATE="C" LC_MONETARY="C" LC_MESSAGES="C" LC_ALL=JA16SJIS --問題ないサーバー----------- LANG=ja_JP.PCK LC_CTYPE="ja_JP.PCK" LC_NUMERIC="ja_JP.PCK" LC_TIME="ja_JP.PCK" LC_COLLATE="ja_JP.PCK" LC_MONETARY="ja_JP.PCK" LC_MESSAGES="ja_JP.PCK" LC_ALL= ----------------------------- 1、rootでLC_ALLが設定されているという事でしょうか? 2、問題ないサーバーと同じ環境にするには何処を直せば良いのでしょうか? 3、2がサーバー管理方針などで変更できない場合、C-Shellで unsetenv LC_ALL setenv LANG ja_JP.PCK とすれば良いのでしょうか? 宜しくお願い致します。 |
>>4232 68user >コネクションが切れた場合は、connect しなおす必要があります。 コレクションが切れているか否かの検知ですが、クライアントからsendを 行ったときのタイムアウトを検知したときが一般的でしょうか (むしろこれしかない?) 宜しくお願いします。 |
>>4235 zsh 試しに下記を実行してみましたが、元に戻ってしまいました。。 echo内の日本語が文字化け?して「`」になっている為でしょうが 何故未だ日本語が表示できないのでしょうか? 問題ないサーバーではダブルコーテーションで囲まれてるのに 下記結果では囲まれてないのがダメなのでしょうか? ---------------------------------------------------- #!/usr/bin/csh -fx locale unsetenv LC_ALL setenv LANG ja_JP.PCK setenv LC_CTYPE ja_JP.PCK setenv LC_NUMERIC ja_JP.PCK setenv LC_TIME ja_JP.PCK setenv LC_COLLATE ja_JP.PCK setenv LC_MONETARY ja_JP.PCK setenv LC_MESSAGES ja_JP.PCK locale echo "ロードエラーチェックリスト作成処理($0) 開始" ---------------------------------------------------- locale LANG= LC_CTYPE="C" LC_NUMERIC="C" LC_TIME="C" LC_COLLATE="C" LC_MONETARY="C" LC_MESSAGES="C" LC_ALL=JA16SJIS unsetenv LC_ALL setenv LANG ja_JP.PCK setenv LC_CTYPE ja_JP.PCK setenv LC_NUMERIC ja_JP.PCK setenv LC_TIME ja_JP.PCK setenv LC_COLLATE ja_JP.PCK setenv LC_MONETARY ja_JP.PCK setenv LC_MESSAGES ja_JP.PCK locale LANG=ja_JP.PCK LC_CTYPE=ja_JP.PCK LC_NUMERIC=ja_JP.PCK LC_TIME=ja_JP.PCK LC_COLLATE=ja_JP.PCK LC_MONETARY=ja_JP.PCK LC_MESSAGES=ja_JP.PCK LC_ALL= echo [hG[`FbNXgャ(/disk18/acua/acua01/sh/FNC07998.csh) Jn 不整合 - ` ---------------------------------------------------- |
>>4238 まつ 実験してみましたが、うまくいかないサーバには ja_JP.PCK の ロケールがインストールされていないようです。 >>4232 68user で「csh のバグでは」と言いましたがこれは誤りで、csh だけが 真面目にエラーチェックしているような感じです。 動かないマシン (Solaris8) の /usr/lib/locale/ja_JP.PCK/: LC_MESSAGES/ 動くマシン (Solaris2.6) の /usr/lib/locale/ja_JP.PCK/: LC_CTYPE/ LC_MESSAGES/ LC_TIME/ ja_JP.PCK.so.1 locale_description methods_ja_JP.PCK.so.1 そして ja_JP.PCK ロケールが含まれているマシンであっても、 #!/bin/csh setenv LANG ja_JP.PCK echo "ロードエラーチェックリスト作成処理($0) 開始" このスクリプトは動作しませんでした。おそらく、ja_JP.PCK にした 時点では、既にスクリプトの字句解析は終了しているからだろうと思います。 対策案は 3つ。 案1. - ja_JP.PCK ロケールをインストールする。インストール方法は知りませんが、 以前他のマシンから /usr/lib/locale/ja_JP.PCK/ をぶっこ抜いてきたことが あったっけ。 - さらに wrapper スクリプトを作る 案2. Shift_JIS の「チ」の 2バイト目が ` であることが直接の原因なわけで、 echo 'ロードエラーチェックリスト作成処理('$0') 開始' などと '' で囲んで ` を解釈させないようにする。 案3. 一番いいのは、スクリプトを EUC-JP に変えて、ロケールを混在 させないこと。 あと、 > LC_ALL=JA16SJIS というロケールは存在しないので、おそらく無効なロケール扱いされて いるでしょう。JA16SJIS って Oracle 的なロケール表記ですから。 LANG と LC_* の関係は以下の URL をどうぞ。 http://www.jp.freebsd.org/QandA/HTML/2199.html http://www.jp.freebsd.org/QandA/HTML/2200.html |
>>4237 しず send はローカルの mbuf にデータをコピーしたら正常終了と みなすので、エラーになりません。 recv でエラーになるか、次回の send で EPIPE が発生するかの いずれかです。 |
>>4239 68user /usr/lib/locale/ja_JP.PCK/:を両サーバーで比較しましたが同じでした。 そして上手く行くサーバーでは #!/bin/csh setenv LANG ja_JP.PCK echo "ロードエラーチェックリスト作成処理($0) 開始" も動作しました。 LANG と LC_* の関係、有り難うございます。勉強になります。 #!/bin/csh -fx locale unsetenv LC_ALL setenv LC_ALL ja_JP.PCK setenv LANG ja_JP.PCK unsetenv LC_ALL locale env として、うまくいくサーバーと同じlocaleに出来ましたがそれでも不整合になります。 env実行結果 --上手く行くサーバー----------------------------------------- HOME=/export/home/adm HZ=100 LANG=ja_JP.PCK LOGNAME=adm MAIL=/var/mail/adm PATH=/opt/oracle/product/8.1.7/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin: PS1=# PWD=/opt/netos/bin SHELL=/bin/csh TERM=vt100 TZ=Japan USER=adm _INIT_NET_STRATEGY=none _INIT_PREV_LEVEL=S _INIT_RUN_LEVEL=3 _INIT_RUN_NPREV=0 _INIT_UTS_ISA=sparc _INIT_UTS_MACHINE=sun4u _INIT_UTS_NODENAME=isv1dm10 _INIT_UTS_PLATFORM=SUNW,Ultra-Enterprise-10000 _INIT_UTS_RELEASE=5.8 _INIT_UTS_SYSNAME=SunOS _INIT_UTS_VERSION=Generic_108528-16 --上手く行かないサーバー----------------------------------------- HOME=/ HZ=100 LOGNAME=root PATH=/usr/sbin:/usr/bin:/opt/EMCpower/bin:/etc:/usr/ccs/bin:/usr/local/bin SHELL=/sbin/sh TERM=vt100 TZ=Japan PWD=/opt/netos5/bin USER=root LANG=ja_JP.PCK ----------------------------------------------------------------- この辺の環境が違うのがダメなのでしょうか? 案1はja_JP.PCK ロケールはインストールされており上記でLANGの設定も 出来たので、案からは外れたと思います。 案2ですが、echoをダブルコーテーションで囲むのとシングルコーテーションで 囲むのでは解釈が異なるのですね?? 知りませんでした。。 案3ですが、うまくいくサーバーではShift_JISで動作しているので 腑に落ちません。。envの結果に差があるのが原因でしょうか?? 文字コードって奥が深いというか複雑というか厄介ですね。。(^^; |
>>4241 まつ > /usr/lib/locale/ja_JP.PCK/:を両サーバーで比較しましたが同じでした。 そうですか、謎ですね。 > そして上手く行くサーバーでは > #!/bin/csh > setenv LANG ja_JP.PCK > echo "ロードエラーチェックリスト作成処理($0) 開始" > も動作しました。 それは最初から LC_CTYPE が ja_JP.PCK になっているからではないですか? LANG・LC_* を全部クリアして、このスクリプトが動きますか? うちの ja_JP.PCK ロケールがインストールされている Solaris2.6 ではエラーになりました。 > 案3ですが、うまくいくサーバーではShift_JISで動作しているので > 腑に落ちません。。envの結果に差があるのが原因でしょうか?? ロケールを統一ってのは、例えばログのエンコーディングがばらばら だったりすると grep するにも面倒でしょ、というレベルの話です。 うまくいかないサーバで、 #!/bin/csh -f echo "ロードエラーチェックリスト作成処理($0) 開始" のスクリプトを root で % env LANG=ja_JP.PCK [スクリプト名] とすると動くのですよね? あと、うまくいかないサーバで、 - root で実行するとエラー - user01 で実行するとうまく動く ということですよね? root と user01 のログイン後の env 結果を比較してみてはどうですか? |
>>4242 68user 上手く行くサーバーで ---------------- unsetenv LC_ALL unsetenv LANG locale env echo "ロードエラーチェックリスト作成処理($0) 開始" ---------------- としたら ----------------------------------------- LANG= LC_CTYPE="C" ・・・ _INIT_UTS_VERSION=Generic_108528-16 (/data/keisu/ffile/shell/Data_Unqget.sh) ----------------------------------------- となりました。。二バイト文字が無視されている?? > うまくいかないサーバで、 > #!/bin/csh -f > echo "ロードエラーチェックリスト作成処理($0) 開始" > のスクリプトを root で > % env LANG=ja_JP.PCK [スクリプト名] > とすると動くのですよね? 私にはrootで実行する権限がなく、あるバッチ管理ツール経由で 起動させているのですが、そのツールに env LANG=ja_JP.PCK /disk01/hoge/hoge.csh と記述して起動させると stat: No such file or directory となってしまいました。。 > あと、うまくいかないサーバで、 > - root で実行するとエラー > - user01 で実行するとうまく動く > ということですよね? そうです。 バッチ管理ツールはそのツールプロセスを起動させた時点の 起動したユーザ環境が引き継がれるのですが、rootでその ツールを起動させています。 telnetでuser01でログインして実行すると上手く動くのです。 > root と user01 のログイン後の env 結果を比較してみてはどうですか? 以下のとおりです。 ------------root------------------------------------------------- #スクリプトにenvを書いてツールから実行させて吐き出した結果です HOME=/ HZ=100 LOGNAME=root PATH=/usr/sbin:/usr/bin:/opt/EMCpower/bin:/etc:/usr/ccs/bin:/usr/local/bin SHELL=/sbin/sh TERM=vt100 TZ=Japan PWD=/opt/netos5/bin USER=root LANG=ja_JP.PCK ------------user01------------------------------------------------- HOME=/export/home/user01 PATH=/opt/ora8i/app/oracle/product/8.1.7/bin:/usr/bin:/usr/ccs/bin:/usr/ucb:/bin:/usr/bin:/usr/ucb: /etc:. LOGNAME=user01 HZ=100 TERM=vt100 TZ=Japan SHELL=/bin/csh MAIL=/var/mail/user01 LANG=ja_JP.PCK _INIT_NET_STRATEGY=none _INIT_PREV_LEVEL=S _INIT_RUN_LEVEL=3 _INIT_RUN_NPREV=0 _INIT_UTS_ISA=sparc _INIT_UTS_MACHINE=sun4u _INIT_UTS_NODENAME=atras01 _INIT_UTS_PLATFORM=SUNW,Sun-Fire-480R _INIT_UTS_RELEASE=5.8 _INIT_UTS_SYSNAME=SunOS _INIT_UTS_VERSION=Generic_108528-22 PWD=/export/home/user01 USER=user02 ORACLE_BASE=/opt/ora8i/app/oracle ORACLE_HOME=/opt/ora8i/app/oracle/product/8.1.7 ORACLE_SID=SID_A NLS_LANG=Japanese_Japan.JA16SJIS ORA_NLS33=/opt/ora8i/app/oracle/product/8.1.7/ocommon/nls/admin/data LD_LIBRARY_PATH=/opt/ora8i/app/oracle/product/8.1.7/lib ----------------------------------------------------------------- 何が悪いのか分かりますか?? |
>>4243 まつ わたしが言いたいのは - スクリプトの先頭で LANG を設定しても、既に字句解析は 終了しているのだから意味がないのでは。 - うまく動く環境では、元々 ja_JP.PCK が設定されていただけでは。 ということです。 > stat: No such file or directory これは別問題ですよね。 #!/bin/csh -f echo "チェック" が動くかどうかを確認すべきです。 |
あと、 Locale could not be set properly についてはわかりません。 こちらの環境では、ja_JP.PCK ロケールがない場合のみ このエラーが出て、ロケールがある環境ではうまく動きました。 |
>>4243 まつ メッセージの意味としては、選択されたロケールが使用できない状態(つまりインストールされていない) である事を示しています。 恐らく今の状態は 1./etc/profile か /.profileで LC_ALL を設定している。(且つ間違い) 2.当然 root から生成された子プロセスにも LC_ALL が設定されている(且つ間違い) 3.LANG を変更する際に( LC_ALL が空ではないので) LC_ALL のロケールについても チェックされる →存在しないロケールなので「Locale could not be set properly」を出力 (ただし LANG は変更されている筈) だと思います。 一般ユーザで動作するのであれば、PCK ロケールはインストールされているので 文字化けの原因は、親プロセスの環境変数の違いによるのかも知れません。つまり >>4244 68user ではないかと。 (確認するためには wrapper スクリプトかますのが簡単だと思います。) |
>>4246 zsh > 3.LANG を変更する際に( LC_ALL が空ではないので) LC_ALL のロケールに > ついてもチェックされる なるほど、それは気がつきませんでした。 ja_JP.PCK ロケールがインストールされている Solaris2.6 で、LC_ALL に JA16SJIS をセットして、さらに LANG に ja_JP.PCK をセットすると、 Locale could not be set properly となりました。 |
68user様、zsh様、返事が遅くなり大変申し訳ございません。m(_ _)m >>4246 zsh とてもよく分かりました。 .profileは / にも /etc にもありませんでしたが、子プロセス起動時に 間違ったLC_ALLを設定しているのが原因なのですね。 子プロセスを再起動すれば解決するのでしょうね。 開発依頼者へお願いしても中々動いてくれません・・(T^T) なので、このスクリプトのみをEUC-JPに変えてunsetenv LC_ALLしたところ 正常に実行できました。 ということで、wrapperスクリプトをかまして確認してませんが、お二人の 仰ることに間違いはないですから、その旨開発依頼者へ報告しておきます。 色々有り難うございました。助かりました。m(_ _)m これで心置きなくお盆休みに入れます(^^) |
スクリプトをシフトJISへ戻してwrapperスクリプトをかませて テストしてみました。 -----wrapper.sh------------------ #!/bin/sh -fx exec env LANG=ja_JP.PCK /disk01/hoge/hoge01/sh/FNC0123.csh -----FNC0123.csh------------------ #!/usr/bin/csh unsetenv LC_ALL ・・・ -----ツールから実行した結果------------------ couldn't set locale correctly + exec env LANG=ja_JP.PCK /disk01/hoge/hoge01/sh/FNC0123.csh ・・・ ----------------------- のように最初に変なメッセージが表示されますが、それ以降は 文字化けもなく理想どおりの結果が得られました。 最初の変なメッセージは間違ったLC_ALLを設定している為でしょうか? 何はともあれ、これで子プロセスを再起動してもしなくても正常に 動作しそうです。 どうも有り難う御座いました。m(._.)m |
たわむれに Ajax で遊んでみました。RFC のタイトルから検索を行います。 http://X68000.q-e-d.net/~68user/rfc/ 以下のような URL も有効です。 http://X68000.q-e-d.net/~68user/rfc/?key=821 http://X68000.q-e-d.net/~68user/rfc/?key=http XMLHttpRequest をひとつしか生成しないタイプではなく、ばしばし XMLHttpRequest を 作る、富豪版です (google タイプ)。ソースはこちら。 http://X68000.q-e-d.net/~68user/cgi-bin/cvsweb.cgi/public_html/rfc/ >>4294 hagu > 最初の変なメッセージは間違ったLC_ALLを設定している為でしょうか? unsetenv LC_ALL には意味がないので、 env LC_ALL= LANG=ja_JP.PCK ... とすれば直ると思います。 |
findコマンドでファイルが今日(本日)作成されたものだけを 抽出したいのですが、以下でよいのでしょうか; find . -name '*.*' -mtime -1 -print 他に別の方法がありますか。 |
>>4251 みのさん ・ファイル名で絞り込まないのであれば -name オプションは不要です。 ・-mtime -1 では「本日作成」ではなく、「24時間以内に変更」されたものが対象となります。 (作成日をみるようなオプションは無いと思います。) ・-print オプションは無くても出力されます。 ・ファイルに限定したいのであれば -type f が必要です。 こんなもんでしょうか。 |
>>4251 みのさん 追加。 - 一般的な UNIX のタイムスタンプには、厳密な意味でのファイル作成時刻は 存在しない。ctime は、例えばパーミッションを変更すると更新される。 - 「24時間以内」ではなく「本日」にしたいなら、適当なファイルを 作って、touch で mtime を前日 23:59:59 にして、 find -newer [適当なファイル] とするのが一般的。しかし手抜きするなら以下のような方法も。 % find . -type f -ls | grep "`date '+%b %d'`" >>4252 zsh BSD や GNU の find には -ctime オプションがあります。-cnewer ってのも あるようですね (基準ファイルの mtime と検索対象の ctime を比較)。 今日の発見その 1 touch(1) などが使うシステムコール utimes(2) って、ctime を更新できない んですねぇ。atime・ctime・mtime いずれも変更可能だとずっと思っていました。 今日の発見その 2 FreeBSD 5.x 以降で対応された UFS2 では本当の生成時刻 (inode 作成時刻) が 保存されていて、struct stat の st_birthtime で参照可能なようです。へぇ。 http://www.usenix.org/events/bsdcon03/tech/full_papers/mckusick/mckusick_html/ http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=stat&dir=jpman-5.2.0%2Fman§=2 |
>>4250 68user RFC のタイトルだけでなく、全文検索もできるようにしました (namazu を使っているので Ajax には向かないですが)。 http://X68000.q-e-d.net/~68user/rfc/ 結構使えるかも、と思うのはわたしだけですかそうですか。 |
>>4254 68user JavaScript必須というのが、いきなり敷居が高いと申しますか、何と申しますか・・・ 今みたいに、帰省先でpoorな環境で使っていると、その時点で引いてしまっております。 >>4250 68user ここでポイントしている>>4294が、4294まで投稿が伸びたときに、どうなるか、気になるところです。 |
> 4523 ありがとうございます。 別なんですが、 カンマ区切りのCSV形式のデータを読み込み nawkのsub関数を使用して文字列の置換をやっています。 フィールド2番目のみを入れ替えようとして以下の様に しました。 置換は行われたのですが、カンマが半角スペースに置換え られて出力されてしますのです。 カンマのまま出力させるには、どうすればよいのですか。 nawk -F"," -v OUT=${OUT_FILE} -v OLD=${OLD_STR} -v NEW=${NEW_STR} ' BEGIN { output=sprintf("%s",OUT); } function func(OLD,NEW) { (処理) sub($2,NEW,$2) ; print >> output ; (処理) } func(OLD,NEW); }' $IN_FILE |
>>4253 68user フォローありがとうございます。 -ctime オプションは使ったことが無いですね。 (使う場面もない・・・) >>4254 68user Ajax を弄ってみたいと思っていたので、 サンプルとして参考にさせて頂きます。 >>4256 みのさん 変数OFSで出力用の区切り文字を指定できます。 |
>>4257 zsh >変数OFSで出力用の区切り文字を指定できます。 ありがとうございます。 上手くいきました。 |
>>4255 へにか > JavaScript必須というのが、いきなり敷居が高いと申しますか RFC の検索がやりたかったわけではなく、Ajax で遊んでみたかった だけなので、Javascript 必須なのはなにとぞご勘弁を。 >>4256 みのさん お礼だけではなく、結果報告をしていただけるとうれしいです。 http://x68000.q-e-d.net/~68user/cgi-bin/wwwboard.cgi?howtouse >>4257 zsh > Ajax を弄ってみたいと思っていたので、 > サンプルとして参考にさせて頂きます。 学習目的ならば http://chasen.org/~taku/software/ajax/ime/ の方がシンプルでよいと思います。ただし上記 URL の if (oldkey != key) { oldkey = key; if (xmlhttp.readyState == 1 ... ){ return; } は、正しくは if (oldkey != key) { if (xmlhttp.readyState == 1 ... ){ return; } oldkey = key; です (とわたしは思っています)。 ところで、「RFC 検索」に RFC の日本語訳へのリンク機能を追加しました。 http://X68000.q-e-d.net/~68user/rfc/?key=http&target=title |
>>4259 68user お礼だけで、確認結果を報告せず申し訳ありません。 > とするのが一般的。しかし手抜きするなら以下のような方法も。 > % find . -type f -ls | grep "`date '+%b %d'`" で試してみました。 確かに、本日作成のファイルが表示されました。 date '+%b %d'でgrepをしているため、1年前の同じ日付のものが表示 されます。 |
>>4260 みのさん > date '+%b %d'でgrepをしているため、1年前の同じ日付のものが表示 > されます。 なるほど。 本日の分は Aug 16 02:16 昨年以前は Aug 16 2004 などと表示されるので、 % find . -type f -ls | grep "`date '+%b %d'` [0-9][0-9]:[0-9][0-9]" とかですかね。 とはいえ所詮は手抜きな方法なのでおすすめはしません。 |
>>4261 68user >とはいえ所詮は手抜きな方法なのでおすすめはしません。 > % find . -type f -ls | grep "`date '+%b %d'` [0-9][0-9]:[0-9][0-9]" >とかですかね。 手抜きとは言っても期待した結果は得られました。 |
今日から仕事復帰しました。m(_ _)m >>4250 68user >unsetenv LC_ALL には意味がないので、 > env LC_ALL= LANG=ja_JP.PCK ... > とすれば直ると思います。 確認させて下さい。 具体的には、下記のようにすれば良いという事でしょうか? -----wrapper.sh------------------ #!/bin/sh -fx exec env LC_ALL= LANG=ja_JP.PCK /disk01/hoge/hoge01/sh/FNC0123.csh -----FNC0123.csh------------------ #!/usr/bin/csh #コメントアウトunsetenv LC_ALL ・・・ ---------------------------------- 以上、宜しくお願い致します。 |
>>4263 まつ > 具体的には、下記のようにすれば良いという事でしょうか? その通りです。 |
こんにちわ。19日はお休みを頂いておりました。 >>4264 68user 御礼が遅くなりました。 有り難う御座いました。m(_ _)m |
リダイレクションの操作について教えて下さい。 環境は、Solaris8、シェルは、shです。 file1.txtファイルは存在。 file2.txtファイルは存在しません。 の状況で、lsの結果をリダイレクションを使ってファイルに出力 しています。 ls -l text1.txt text2.txt > kekka.txt 2>&1 標準出力と標準エラーを、kekka.txtファイルに出力。 ls -l text1.txt text2.txt 2>&1 > kekka.txt 標準出力のみ、kekka.txtに出力。 ls -l text1.txt text2.txt 2>&1 2> kekka.txt 標準エラーのみ、kekka.txtに出力。 ls -l text1.txt text2.txt 2>&1 >&kekka.txt 標準出力と標準エラーを、kekka.txtファイルに出力。 何故なのでしょうか。 ls -l file1.txt file2.txt 1>&2 2>&kekkat.xt sh kekka.txt: ambiguous redirect 何故なのでしょうか。 |
>>4266 つ No.4266の書込み内容が間違っていました。名前も中途半端です。 訂正も含め再書込みします。 リダイレクションの操作について教えて下さい。 環境は、Solaris8、シェルは、shです。 file1.txtファイルは存在。 file2.txtファイルは存在しません。 の状況で、lsの結果をリダイレクションを使ってファイルに出力 しています。 ls -l file1.txt file2.txt > kekka.txt 2>&1 標準出力と標準エラーを、kekka.txtファイルに出力。 ls -l file1.txt file2.txt 2>&1 > kekka.txt 標準出力のみ、kekka.txtに出力。 ls -l file1.txt file2.txt 2>&1 2> kekka.txt 標準エラーのみ、kekka.txtに出力。 ls -l file1.txt file2.txt 2>&1 >&kekka.txt 標準出力と標準エラーを、kekka.txtファイルに出力。 何故なのでしょうか。 ls -l file1.txt file2.txt 1>&2 2>&kekkat.xt sh kekka.txt: ambiguous redirect 何故なのでしょうか。 |
便利なページありがとうございます。 http://x68000.q-e-d.net/~68user/net/http-auth-2.html の > 「A1のMD5値 + nonce値 + ":" + nc値 + ":" cnonce値 + ":" + qop値 + A2のMD5値」の MD5 値 ですが、 正しくは、 「A1のMD5値 + ":" + nonce値 + ":" + nc値 + ":" cnonce値 + ":" + qop値 + ":" + A2のMD5値」の MD5 値 だと思います。 |
>>4267 つよし とりあえずこれを読んでください。 http://X68000.q-e-d.net/~68user/unix/pickup?%A5%EA%A5%C0%A5%A4%A5%EC%A5%AF%A5%C8 以下、手元に bash しかないため、sh では試していません。 間違いがあれば補足願います>Solaris な方 > ls -l file1.txt file2.txt 2>&1 >&kekka.txt > 標準出力と標準エラーを、kekka.txtファイルに出力。 > 何故なのでしょうか。 そもそもこれは冗長です。 >&kekka.txt だけで標準出力と標準エラー出力が kekka.txt にリダイレクトされます。 sh において (csh も同じですが)、 >&ファイル名 は、標準出力と標準エラー出力をまとめてファイルにリダイレクトするもの だからです。 > ls -l file1.txt file2.txt 1>&2 2>&kekkat.xt > sh kekka.txt: ambiguous redirect > 何故なのでしょうか。 ファイルへのリダイレクトは「>&」ではなく「>」を使うべきだからです。 sh のリダイレクトには以下の 2パターンがあると考えるとよいでしょう。 1. >ファイル名 2. [数字]>&[数字] さらにタイプ量を減らすため、 3. >&ファイル名 (>ファイル名 2>&1 と同じ) という syntax sugar があります。よって、 [数字]>&ファイル名 はおかしいです。とはいえ 1>&ファイル名 は通ってしまいますが。 >>4268 とおりすがり > 正しくは、 > 「A1のMD5値 + ":" + nonce値 + ":" + nc値 + ":" cnonce値 + ":" + qop値 + ":" + A2のMD5値」の MD5 値 ごもっともであります。遅くとも明日までには修正します。 |
>>4268 とおりすがり 修正いたしました。ご指摘ありがとうございました。 http://X68000.q-e-d.net/~68user/net/http-auth-2.html http://X68000.q-e-d.net/~68user/cgi-bin/cvsweb.cgi/public_html/net/org/http-auth-2.html |
>>4267 つよし >りあえずこれを読んでください。 >http://X68000.q-e-d.net/~68user/unix/pickup?%A5%EA%A5%C0%A5%A4%A5%EC%A5%AF%A5%C8 参考になります。 特に「2>&1」の説明については、「2 の出力先を 1 にマージする」で覚えと説明している 本もありました。 >&kekka.txt については、冗長なんですね。 本来なら、エラーになるはずなの実際には動いているので、おかしいとは 思っていました。 使わない方がよさそうですね。 |
>>4271 つよし > 本来なら、エラーになるはずなの実際には動いているので 冗長ですが、エラーではありません。 2>&1 >&kekka.txt は 2>&1 >kekka.txt 2>&1 と同じですが、ひとつのディスクリプタについての複製を複数回行っても 別にエラーにはなりません。 この例では最初の 2>&1 で 2 の出力先が stdout になりますが、後の 2>&1 で 2 の出力先が kekka.txt になり、意味がないだけです。 |
>>4272 68user 解説、アドバイスありがとうございます。 |
初めて質問させて頂きます。 Solaris9のサーバからmailxコマンド(sendmailを設定済み)を使用してメールサーバ経由で クライアントにE-MAILを送信しようとしています。 問題が一つありまして、クライアントのOUTLOOKで見たとき件名が文字化け してしまいます。 色々調べたところ、sendmailでは文字化けしてしまうのはどうしようもないと 聞きました。 Solaris9でメールを送信できるソフトウェアで件名が文字化けしないようなもの を知っていたら教えて頂けませんか? (メールサーバ側クライアントのメールの設定は変更できません) |
>>4275 ひで 普通はプログラム側で MIME エンコードして、sendmail に渡します。 試していませんが、mailx に渡しても多分うまくいくでしょう。 詳しくは http://X68000.q-e-d.net/~68user/webcgi/mail-1.html http://X68000.q-e-d.net/~68user/webcgi/mail-2.html を読んでください。 |
UNIX 上のPDFファイルをftp転送してPC上で読み込みたいのですが、 転送後にファイルが壊れているとのことで読み込めません。 何かいい方法はありますでしょうか |
>>4277 ろく バイナリモードで転送してますか? |
>>4276 # 68user 回答有難うございます。 試してみます。 |
Solaris8i、shシェルで以下のような処理をしようとしています。 番号が同じもの同士の値を足し算してその和を求めています。 ファイルフォーマット 番号,値 001,10 001,20 001,30 002,5 003,15 003,20 004,100 結果 001,60 002,5 003,35 004,100 としたいのですが、どうすればよいですか。 |
>>4280 くま Solarisi・・・って部分は置いといて。 shというかnawkですが、以下のようにやればできます。 (awkでは動きません。) ------------------------ $ nawk -F, ' /^[0-9]+,[0-9]+$/ { var[$1] = $2; } END { for (i=0; i<=999; ++i) { j = sprintf("%03d",i); if (j in var) print j "," var[j]; } }' data.txt ------------------------ |
>>4281 zsh >Solarisi・・・って部分は置いといて。 間違えた・・・Solaris8iだ・・・ |
はじめまして。ネットワークプログラミングのページを参考にさせてもらっています。 で、以下の部分、 >>DNS クライアントを作ってみよう (3) >リソースデータは「&Sorry, no version string is available」と表示されるが、 >dig や nslookup は「Sorry, no version string is available」となります (& がない)。 >先頭の & を削るような規則があるようだが、それが何なのかはわからなかった。 これ、'&'=38で、リソースのlengthみたいです。 きちんとした資料では、まだ見つけられていないのですが、 djbdnsのソースコード(dns_txt.c)上では、ドメイン名と同じように、 [length][data][length][data]と見ているようです。 リソースをいくつかのブロック(例えばライン毎など)に分けているのかなーと。 んん。標準な資料を探し中です。 |
>>4280 くま Solaris8iは手元にないので試していないですが、shで。 --------------------------- #!/bin/sh # デリミタを[,]に IFS=, # キーのリスト list="" # 計算 while read key value; do eval "if test -z \$array$key;then array$key=0; fi" eval \array$key=`eval "expr \\$array\$key + \$value"` list=$list,$key done < data.txt # 重複したキーを削除する clone=`echo "$list" | sed 's/^,//'` for key in $clone; do list=`echo "$list" | sed "s/$key//g" | sed 's/,[,]*/,/g'` list=$list,$key done # 表示 list=`echo "$list" | sed 's/^,//'` list=`echo "$list" | sed 's/,$//'` for key in $list; do echo -n $key, eval echo \$array$key done --------------------------- $ sh test.sh 001,60 002,5 003,35 004,100 --------------------------- 効率悪そうだ..。 |
>>4280 くま 以下ので出来ると思います。 ---------------------------------- #!/bin/sh nawk -F"," ' BEGIN { } function syukei() { total=0+0; no=$1; while (NF>0) { if (no == $1) { total = total + $2; } else { printf("%03d:%d\n",no,total); no=$1; total=$2; } getline; } printf("%03d:%d\n",no,total); } { if (NF == 0) next ; syukei() ; }' file.txt exit 0 |
続々と投稿されているので投稿してみます。 >>4280 くま awkなら、 $ nawk -F, '{v[$1]+=$2;}END{for(k in v) print k","v[k]}' data.txt | sort とできると思います。 /+ data.txt -> データファイル +/ |
>>4286 nagadomi nagadomiさんのコード凄いですね。 1行で実現してしまうなんて。 自分も、1行で実現できないかと試みてはみたのですが、良い案が浮かび ませんでした。 向学として教えていただきたいのですですが、 番号の比較、判断していませんが、何故、上手く出来ているのですか。 >'{v[$1]+=$2;}END{for(k in v) print k","v[k]}' 宜しくお願いします。 |
>>4286 nagadomi うわー、awkってforでその表記できるんだっけー。 すっかり忘れてました。 最近awk触っていなかったとは言え、恥ずかしい・・・ >>4287 シャチ >for(k in v) は、配列vの値を一つ一つ変数kに代入してループするという意味です。 |
>>4288 zsh ×配列vの値を一つ一つ変数kに代入してループする ○配列vの添字を一つ一つ変数kに代入してループする |
>>4287 シャチ zshのおっしゃるとおりです。 Perlでいうforeach的な使い方です。 >>4288 zsh awkは、1年ほど前に1日(プログラム一個..)使ったことがあるだけだったので、 実はリファレンスをちょっと見ました。 そこでforeachあるじゃんと..。知らない分、確認するのでうまくいった感じですかね..。 zshさんのコードは、ソートを考えて、あのような書き方をしているのかと思っていました。 私は普段、こういうのにはPerlを使っています。 |
>>4288 zsh 番号の比較、判断していませんが、前後が同じかどうかの判断は どこでしているのですか。 >{v[$1]+=$2;} で判断しているのですか。 お願いします。 >>4290 nagadomi Perlを使うのが便利なのですか。 Perlは、人が作ったのをメンテナンスするため1日調べたのみです。 |
>>4288 zsh 配列vの添え字が、番号なんですね。 だから、番号の配列要素に割り当てられた値が使用できるから 番号の比較、チェックが不要なんですね。 添え字には、数値しか使用できなと思っていました。 文字列も使えるんですね。 |
>>4283 nagadomi なるほど、length ですか。RFC をあさってみましたが、まだ見つけられません。 発見したらぜひ教えてください。 関係あるかな? と思いつつ、まだちゃんと読んでいない資料: http://www.cs.utah.edu/~danderse/adns/arch.html http://www.zeroconf.org/Rendezvous/txtrecords.html |
Solaris8で、Bシェル(sh)で以下のことを行いたいのですが、 良い方法を教えてください。 2つのファイルの中身を比較し、その結果を表示したいのです。 --- file1.txt ----- hanako.sato jiro.yamamoto taro.yamada taro-1.yamada tsuyoshi.saito --- file1.txt ----- jiro.yamamoto taro-1.yamada taro-2.yamada gou.yamashita 結果 file1 Only, hanako.sato match,jiro.yamamoto file1 Only,taro.yamada match,taro-1.yamada file1 Only,tsuyoshi.saito file2 Only,taro-2.yamada file2 Only,gou.yamashita と出力したいのです。 お願いします。 |
>>4294 hagu 案1. file1.txt を while で 1行ずつ読み込み、読み込んだ行が file2.txt に含まれるかを grep で調べる。 案2. file1.txt と file2.txt をそれぞれ sort し、diff をとって、 行頭が < か、> かを調べる。重複する行は…どうしましょうねぇ。 案3. perl でハッシュに突っ込む。3行くらいで書けそうな気がします。 |
>> 4295 perl使用したことありません。 書くとしたらどうなりますか。 案1ですと、file1.txtで調べたあと、file2.txtのみで存在する物も調べるので 同様の処理が必要になります。重複する行が2回でることになります。 |
>>4296 hagu Perl クックブック VOLUME 1 のレシピ 4.8・4.9 あたりを立ち読みして、 なんとかなりそうなら手を出してみるとよいでしょう。 > 重複する行が2回でることになります。 file2.txt を while で 1行ずつ読み込み、読み込んだ行が file1.txt に 含まれていれば何も表示しない、でいいのでは。 > 案2. file1.txt と file2.txt をそれぞれ sort し、diff をとって、 > 行頭が < か、> かを調べる。重複する行は…どうしましょうねぇ。 GNU diff があるなら (unified diff を出力できる diff があるなら)、 % diff -u -U 10000 file1.txt file2.txt として (10000 はファイルの行数を超える数)、 ・行頭が - なら file1.txt のみ ・行頭が + なら file2.txt のみ ・行頭がスペースなら重複行 ですかね。 |
>>4294 hagu 1.file1.txtとfile2.txtを辞書順にソートする。 2.diffコマンドで、file1.txtとfile2.txtの差異を表示する。 diffコマンドの出力結果の見方は、ご存じですよね。 ">"は、右側に指定したファイル内に差異があることを示す。 "<"は、左側に指定たファイルにある差異があることを示す。 3.grepとかcutを使用して見やすいように編集。 4.file1.txtかfile2.txtをキーにして、grepで存在する文字列だけを抽出。 で、出来ると思います。 |
>>4294 hagu 動作未確認ですが、こういうのはダメですかね。 sort file1 | uniq > file1-2 sort file2 | uniq > file2-2 comm -23 file1-2 file2-2 | sed 's/^/file1 Only,/' comm -13 file1-2 file2-2 | sed 's/^/file2 Only,/' comm -12 file1-2 file2-2 | sed 's/^/common,/' 順序よく並んでしまいますが。 |
>> 4299 ありがとうございます。 確認してみます。 |
>>4299 has ありがとうございます。 期待していた結果が得られました。 commというコマンドがあるのですね。 知りませんでした。 勉強になりました。 |
突然すみません。私は、いま卒業研究で動画像を処理しようとしてるものです。bmpファイルからppmやpgmへの一括変換はできたのですが、それらが生(raw)なので、つまりP6なので処理に困ってます。P3にしたいのですが大量のPPM、PGMをまとめてASCIIに変換することは可能でしょうか?よろしければ教えていただけると助かります。 |
>>4302 tana 試してませんが、ppmtogif して giftoppm で戻すとか。 |
giftoppmって一度に多数のファイルを変換できますか? |
>>4304 tana 知りませんが、もしできないとしても for i in *.ppm; do ppmtogif < $i | giftoppm > out/$i; done とか、 ls *.gif | sed 's/\(.*\)/ppmtogif < \1 | gitoppm > out\/\1/' | sh とか。 拡張子は適当に変更するということで。 |
blog なるものを始めてみました。 http://68user.blog27.fc2.com/ 入力が非常に面倒なのですが (HTML 手打ちと変わらない)、世の人たちは 使いこなしているんですかねぇ…。 |
日記を書く習慣の無い僕にとっては、blogを使う利点が未だに理解できないです。 もし、68userさんの視点でその利点を見出せたら、是非とも教えていただきたく、 宜しくお願いいたします。 追伸 FreeBSDでの活動は、今でもされているのですか? |
>>4307 へにか 技術的なことは、最終的に web にまとめたいと思っています。しかしそれを 行うにはある程度の時間と労力がかかります。よって、とりあえず殴り書きを するネタ帳として blog を活用できないかと考えました。 また、 http://x68000.q-e-d.net/~68user/cgi-bin/wwwboard.cgi?log=4061 http://x68000.q-e-d.net/~68user/cgi-bin/wwwboard.cgi?log=3774 のような、ひとつのコンテンツとしてまとめづらいメモを書く場所として 適切ではないだろうか、と思っています。 それと、コメントやトラックバックという仕組みがあるため、web よりは フィードバックが得られるのではないかと。 しかし、perl+DBI のネタを書いてみてわかったのですが、わたしは完璧主義者 なので、結局はエディタで下書き・推敲しないと気がすまないようです。あまり blog 向きではないのかもしれません。 あとこれは愚痴ですが、入力が非常に面倒です。まず、WRAP="OFF" 属性が付いて いない TEXTAREA 要素の相手をすることが苦痛です。 また、ソースを張る際に <PRE>〜</PRE> で囲んでみましたが、行間に変な間が 空いてしまい、結局スペースを に置換して張っていたりします。 「blog は更新が簡単」と世の人は言いますが、fc2 に限れば嘘です。 > FreeBSDでの活動は、今でもされているのですか? 最近はしていませんが、するべき立場にあります。すべてはモチベーションの 問題です。 |
>>4308 68user なるほど。コメントがつけられる掲示板のような使い方+トラックバックですね。 コメント:誰でも簡単に書きやすい。 トラックバック:細かい指摘事項が伝わりやすい。 ってところでしょうか。仕組みとしては、やりたいことに一番近そうに見えますが、 >「blog は更新が簡単」と世の人は言いますが、fc2 に限れば嘘です。 恐らく、今流行っているタイプのblogの使用目的に合致していない、と思います。 ・・・と言いつつ、実はblogを理解して無いので、間違った事を言っているかもしれませんが。 >すべてはモチベーションの問題です それはいえるかもしれませんね。元同僚は、とある部分のソースを書くという 立場にいるそうですが、結構(手続きが?)大変だ、といってましたし。 自分の時間がとれて、収入に余裕があって、FreeBSDに絶対に貢献したいという 意思が無ければ、なかなか腰が上がらないのだと、勝手ながら推測しております。 |
突然ですみません、UNIX初心者です。 UNIXにて以下の様な事がしたいのですが、よい方法があれば教えて下さい。 随時追加されるあるファイル(aaa.txt)の内容を行単位ででCプログラムで読込みたい。 条件) 1.aaa.txtは行単位に随時追加される。 2.Cプログラムに渡すのはある文字が含まれる行のみ。 以下の様なことを試したのですが、うまくいきませんでした。 tail -f aaa.txt | grep ABC | Cプログラム ※Cプログラムは今の所、標準入力(gets)から読み込むだけのプログラムです。 |
>>4309 へにか > なるほど。コメントがつけられる掲示板のような使い方+トラックバックですね。 そうですね。ただ、コメントやトラックバックより、思いついたことを すぐに書くための場所、という方がわたしにとっては重要かなと思っています。 > 恐らく、今流行っているタイプのblogの使用目的に合致していない、と思います。 いや、ただインタフェースがイマイチなだけだと思います。空白を に 変換してくれればそれで解決する話ですから。 >>4310 UNIX初心者 こちらを。 http://x68000.q-e-d.net/~68user/cgi-bin/wwwboard.cgi?log=2800 |
>tail -f log | perl -ne '$|=1;print if m/foo/' >> log2 で試してみたのですが、perlがインストールされていない為、エラーとなってしまいました。 今回は急ぐので、プログラムで対応してしまいました。 また、利用させて下さい、ありがとうございました。 |
>>4312 UNIX初心者 解決したとのことなので返信不要ですが、perl がないなら % tail -f aaa.txt | awk '/ABC/{print;system("")}' | Cプログラム ですかね。FreeBSD 5.2.1-RELEASE ではうまくいきました。 |
Solaris8のBシェルで、CSV形式のデータのソートを行っています。 数字順にソートしたいのですが、ソート対象の列が半角英数のため 数字順になりません。うまい方法はないでしょうか。 英字が先頭にある場合は、英字を取り除いて数字順にしたいのです。 うまい方法はないでしょうか。 sortコマンドだけでは、だめでした。 --データ 山本 こうたろう,企画,100 山下 大介,企画,A101 山田 太郎,営業,80 山田 花子,営業,A92 山田 一郎,営業,A82 鈴木 一郎,販売,85 鈴木 一郎,海外,1001 松井 英樹,海外,2001 斉藤 次郎,製造,125 佐藤 三郎,組立,A124 武藤 五郎,検査,130 --結果 山田 太郎,営業,80 山田 一郎,営業,A82 鈴木 一郎,販売,85 山田 花子,営業,A92 山本 こうたろう,企画,100 山下 大介,企画,A101 佐藤 三郎,組立,A124 斉藤 次郎,製造,125 武藤 五郎,検査,130 鈴木 一郎,海外,1001 松井 英樹,海外,2001 sortコマンドの「-n」を付けてやってみたのですが、数値として判断するため 上手くできません。 また、付けないと、数値順に並んでくれません。 |
>>4314 hagu 訂正です。 名前の前に社員IDがあり、 半角英数字でソートし、社員IDでソートとなります。 データは、「社員ID、名前、仕事、コード」 コードの半角英数字で数字順に並び替えで、 コードが同じな場合は、社員IDで並び替えです。 英字が先頭にある場合は、英字を取り除いて数字順にしたいのです。 No.4314の結果にしたいのです。 |
>>4314 hagu 101 と A101 という社員 ID が存在する可能性があるか、存在するならソート順は どうするかという仕様が不明確ですが、それは置いておくとして。 > 山本 こうたろう,企画,100 > 山下 大介,企画,A101 > 山田 太郎,営業,80 > 山田 花子,営業,A92 わたしなら一度 sed などで 山本 こうたろう,企画,,100 山下 大介,企画,A,101 山田 太郎,営業,,80 山田 花子,営業,A,92 と別項目にし、sort して、再度 sed で元に戻します。 |
>>4316 68user ありがとうございます。 一度、コードの値を分解しには、気がつきませんでした。 いいかも知れません。 >101 と A101 という社員 ID が存在する可能性があるか、存在するならソート順は >どうするかという仕様が不明確ですが、それは置いておくとして。 コードでソートした後、同じコードないで、社員IDをソートします。 ただし、数字のコードは、数字のコード内で、 英字付きのコードは、英字付きコード内で、 社員IDを並びかえます。 |
お世話になります。 C言語でHTTPクライアントを作成しています。ここのサイトもありますが、自作で行いました。 AのHPを取得してうまく表示されますが、BのHPを取得すると、表示されません。 取得したページのヘッダ情報はどっちも異常はありませんでした。 デバックではどっちでも表示されます。でも、BのHPが取得しても表示されません。 何か助言をして頂けたら幸いです。よろしくお願い致します。 |
>>4318 匿名希望 - 現象が再現する最小限まで削ったソースを提示してください。 - A と B の URL を提示してください。 - そちらで実行した結果を提示してください (ヘッダ情報とかデバッグを含む全部) - OS・コンパイラなどの情報を提示してください。 なお、UNIX 以外であれば、わたしはコンパイル環境がないのでわかりません。 |
初めて投稿します。 自分はSSLを組み込もうとしていろいろ調べているんですが、 調べていると、WindowsでのSSLの設置方法がかかれてないんです。 やっっぱりリナックスで設置したほうがいいのでしょうか? |
>>4320 SSL初心者 まずは検索を。 http://www.google.co.jp/search?q=windows+apache2+ssl&hl=ja&lr=lang_ja&ie=utf-8&oe=utf-8 |
お世話になります。 「マッケーブの循環的複雑度」を出力するツールを探しており、 当ホームページから コマンドcccc(C言語・C++・Java のソース コードのステップ数を調べるツール。)を探し当てました。 ところが、身近にあるサーバで試してみると、 $ cccc hoge.java -bash: cccc: command not found と出力されます。 コマンドccccを実行するための条件等、ありますでしょうか。 ご教示、よろしくお願いします。 |
初めまして。 『UNIXの部屋』の localtime(3) のサンプルコードにある tm_timeの一連の変数参照が間違っています。 |
>> 4322 http://x68000.q-e-d.net/~68user/unix/pickup?Command+not+found 2 又は 6 では無かろうか. |
サーバーの件でメールをお送りしました |
すみません。SSLをWindowsで設定しているんですが、 Apacheのインストールで下記のエラーが出ます。 (OS 10048)通常、各ソケット アドレスに対してプロトコル、ネットワーク アドレス、 たはポートのどれか 1 つ のみを使用できます。 : make_sock: could not bind to dress 0.0.0.0:80 no listening sockets available, shutting down Unable to open logs これは、どういった意味のエラーなのかさっぱりわかりません。 自分で調べてもどの方面から調べるのかわからずじまいで投稿しました。 環境は以下のとうりです。 OS - Windows98 Apache - Apache_2.0.55-Openssl_0.9.8a-Win32をダウンロード OpenSSL - Win32OpenSSL-v0.9.8を使用 参考HP - www.rinzo2.jp/~rinzo/apache_ssl/apache_and_ssl_00.htm ご意見お待ちしております |
シェル内にて以下の記述を入れるとエラーが発生します。 ■エラー発生箇所 cat ./temp.txt | awk 'BEGIN{FS=","}{if(match($1,"^${_XXX_}")!=0){print $0}}' > ./test.csv ■出力エラー awk: There is a regular expression error. ?, *, or + not preceded by valid regular expression The source line number is 1. The error context is >>> BEGIN{FS=","}{if(match($1,"^${_XXX_}") <<< "^${_XXX_}"の部分がエラーとなっているようですがここでは変数は使用できないのでしょうか? |
>>4326 SSL初心者 「OS 10048」で検索した結果の 1番目に出てくるのがおそらく答えです。 http://www.google.co.jp/search?q=OS+10048&start=0&start=0&hl=ja&lr=lang_ja >>4327 awk初体験。 ウチの環境ではエラーにならないのでよくわかりませんが、 ${_XXX_} って変数のつもりで書いてるんですよね? どこで ${_XXX_} に値をセット しているのですか? もしシェルスクリプトでシェル変数や環境変数にセットしているのなら、 引数全体を '' で囲んでいるので置換されません。というわけで cat ./temp.txt | awk 'BEGIN{FS=","}{if(match($1,"^'${_XXX_}'")!=0){print $0}}' > ./test.csv などと ${_XXX_} を外に出します。 |
>>4323 ミケフォ > 『UNIXの部屋』の localtime(3) のサンプルコードにある > tm_timeの一連の変数参照が間違っています。 ありがとうございます。bugid 18 として登録しました。 http://x68000.q-e-d.net/~68user/bugnote/viewbug.php?projectid=1&bugid=18 # 登録する暇があるなら、さっさと直せと。 |
すみません,昨日18時頃から本日11時まで サーバーの通信が切れていました. 昨日13時頃に回線工事があって無事完了したのですが, 終端装置の接続が雑だったらしく,17時頃に突然接続が落ちました. すぐ業者に連絡したのですが既に営業時間外で, 朝まで修理を呼べませんでした. 本日11時に業者が来て直りました. ご報告まで. |
お世話になります。 C言語でHTTPクライアントを作成してますが、HTTPSの場合のポート番号が サイトを探しても見つからないですが、ご存知でしょうか? よろしくお願い致します。 |
>>4330 Netboy 対処いただきありがとうございます。IP アドレスの件はもう少々お待ちください。 >>4331 キック 「https ポート番号」で検索したら一番最初に出てきます。 http://www.google.co.jp/search?q=https+%E3%83%9D%E3%83%BC%E3%83%88%E7%95%AA%E5%8F%B7&hl=ja&lr=lang_ja |
>>4332 68user ありがとうございます。 初歩的ですみません(^ ^;)> |
シェルで、ftpを自動で実行しています。 ftpの接続、ログインの判定や、ファイルのput/getの判定 ができたか判断したいのですが、できるのでしょうか。 エラーが発生したら、「exit 1;」などで終了させて、その ステータスを判断するといったことはできないのでしょうか。 ----------------- ftp -v -n ${SERVER} <<END >/dev/null user ${FTP_USER_ID} ${FTP_PASSWORD} cd ${FTP_DIRECTORY} lcd ${LOCAL_DIRECTORY} get ${GET_FILE} bye END 環境: Solaris8i Bシェル |
No. 4327 で質問させていただきました。 変数はシェル内で実行していました。 そのため""で括った所上手くいきました。 ご回答ありがとうございます。 さらに別の質問させてください。 カンマ及びスラッシュを区切り文字としたいのですが… -FオプションやFS=の指定で複数の区切り文字を指定することはできるのでしょうか? |
>>4335 awk初体験。 区切り文字に正規表現を使用できるawkであれば可能です。 (gawkやnawkなら使用可能ですが、Solaris標準のawk等では使用できません。) $ nawk -F"[,/]" '{ .... }' file $ nawk 'BEGIN{ FS="[,/]" } { .... }' file |
2005/10/29(金) 00:00:00 ごろから IP アドレスの変更・それに伴う DNS 設定変更を 行いました。Refresh とか Retry とか Expire などを理解していないので、何も対策 せずいきなり切り替えました。そのせいで つながらなかった人もいると思いますが、 ご迷惑をおかけしました (わたしも数時間つながらなかった)。 ご協力ありがとうございました>Netboy さん >>4323 ミケフォ 遅くなりましたが、修正しました。 ご指摘ありがとうございました。 # http://x68000.q-e-d.net/~68user/bugnote/viewbug.php?projectid=1&bugid=18 >>4334 hagu わたしなら Perl の Net::FTP モジュールなどできっちりエラーチェックしますが、 どうしても ftp コマンドを使わざるをえないなら、 - ftp コマンドに -d オプションなどをつけて実行結果のログをとる。最後に ログを解析してステータスコードに 4xx 系・5xx 系 がないことをチェックする。 - 接続した時点でリモートに同名のファイル名がないならば、get/put を行って、 最後に ls して、結果をログに保存する。ls の結果を解析し、ファイル一覧・ ファイルサイズ・ファイル個数などのチェックを行う。 くらいしかないような気がします。 |
>>4337 68user > 2005/10/29(金) 00:00:00 ごろから 2005/10/29(土) 00:00:00 の誤りでした。 |
A君とB君(ユーザーIDはそれぞれAとB)は同じグループG(グループIDはG)に属しているとします。 A君は、自分のホームディレクトリ(~A)にあるディレクトリDの中の全てのファイルを、B君など同じ グループに属する人にだけ閲覧可能にしたいと考えました。ただし、A君はディレクトリD以外の ファイル・ディレクトリは(それらのリストを取る(lsコマンド)ことも許可したくありません。 A君はどのようなパーミッションを設定すればよいでしょうか? |
>>4339 TKG ~A/ 710 ~A/D/ 750 ~A/X/ (D 以外) 700 でしょうか。 |
Solarisでシェルスクリプトを起動する場合。 $ csh script.cshと入力しなければなりませんが、 最初のcsh を省略して$ script.cshで起動する方法を教えて下さい。 宜しくお願いします。 |
> 68user様 http://x68000.q-e-d.net/~68user/unix/genre.html#genre22 にheadが二つ表示されています。 >>4341 誠 UNIXの部屋を読めば判ると思いますが・・・ 1.スクリプトの一行目にシェルのパスを指定する。 2.環境変数PATHを設定する。 3.スクリプトに実行権をつける。 といったところでしょうか。 http://x68000.q-e-d.net/~68user/unix/pickup?Command+not+found |
>> 誠さん 4342 で言われている PATH の設定は csh が置かれている場所にパスを通すって 意味であって、PATH に "."(カレントディレクトリ) を加えるって話では無い筈です。 従って、 単に script.csh ではなく ./script.csh って起動方法になると思います。 PATH に "." を加える事の問題とか、csh スクリプトを覚えるよりも sh 系の スクリプトを覚えた方が良いって話は検索すれば出てきますので読んでみましょう。 |
>>4343 hoge スクリプト専用のの格納ディレクトリがあるのかと思い PATHの設定が必要と書きました。 ・・・・ちょっと意地悪したくなったのも事実ですが。 |
>>4337 68user 返事が遅くなって申し訳ありません。 アドバイスありがとうございます。 ログに出力し、ログをチェックする方法でやってみます。 |
sedを使用して大文字から小文字に変換したいのですが、 なかなか上手くいきません。 例えば、「YAMADA」を「Yamada」と先頭の1文字目は大文字で、 2文字目以降を小文字に変換したいのですが、以下の様にsed を使ってやったのですが上手く行きません。 sedでは、無理なのでしょうか。 環境は、Solaris8、Bシェルです。 ---------------------- NM=Ya1AMADA echo $NM | sed 's/[A-Z].*/[a-z]/g' NM=YAMADA echo $NM | sed 's/\(.\)[A-Z]*/\1/g' |
>>4346 hagu 多分、sedだけでは無理だと思います。 sedを使わなくても、awkだけでも可能です。 echo $NM | nawk '{for(j=i=1;i<=length($0); i++) if(i==1) {NM[i]=substr($0,i,1)} else {NM[i]=tolower(substr($0,i,1))}} END{for(count in NM) printf("%c",NM[count]); printf("\n")}' |
>>4347 お 試してみましたが、出方が変です。 amadaY となります。 |
始めまして、ネットワークプログラミング周辺読ませて頂きました。 簡潔なソースで読みやすかったです。 お礼に掲示板カキコ、それにしてもみなさん勉強熱心ですね(笑 ---------------------------------------- echo $NM | \ sed -e h -e 's/^\(.\)\(.*\)/\1/g' \ -e 'y/[abcdefghijklmnopqrstuvwxyz]/[ABCDEFGHIJKLMNOPQRSTUVWXYZ]/' \ -e x \ -e 's/^.\(.\)/\1/g' \ -e 'y/[ABCDEFGHIJKLMNOPQRSTUVWXYZ]/[abcdefghijklmnopqrstuvwxyz]/' \ -e H \ -e g \ -e 's/\n//' ---------------------------------------- なんとなしsedの勉強してしまった、本買う気にはならないけどね。 http://web.archive.org/web/19961202111128/http://yase.yajima.kuis.kyoto-u.ac.jp/staffs/sengoku/sedlec/ |
>>4346 hagu もしperlならこんな感じなんでしょうか? echo $NM | perl -ple 'y/A-Z/a-z/;substr($_,0,1)=~y/a-z/A-Z/;' |
>>4347 お >>4348 hagu 連想配列の場合、表示の順序は、ハッシュ法に従うのでランダムとなります。 すみません。 echo $NM | nawk '{for(i=1;i<=length($0); i++) if(i==1) {NM[i]=substr($0,i,1)} else {NM[i]=tolower(substr($0,i,1))}} END{for(j=1; j<i; j++) printf("%c",NM[j]); printf("\n")}' |
>>4349 マーブル 凄い。 sedだけでですね。 でも、凄く、複雑すぎます。 >>4351 お 今度は、期待したいた結果が得られました。 awkを使っているのも複雑ですね。 |
>>4352 hagu これじゃだめ? $ echo $NM | nawk '{ a=toupper(substr($0,1,1)); b=tolower(substr($0,2)); printf "%s%s\n",a,b; }' |
>>4353 zsh そうですよね。 substr()で2文字目以降すべてを変換してしまえばいんですよね。 何、ループで1文字ずつ変換し、表示しているんだろう。 |
あまり知られていないscanfの用法。 既出でしたか残念。>>4041>>4042 http://www.linux.or.jp/JM/html/LDP_man-pages/man3/scanf.3.html 以下同意 ------------------------------------- sscanf(host_path,"%[^/]%s",host,path); ------------------------------------- p = strchr(host_path, '/'); if ( p != NULL ){ strcpy(path, p); *p = '\0'; strcpy(host, host_path); } else { strcpy(host, host_path); } ------------------------------------- |
fdopen()で作成されたストリームが閉じられたときにファイル記述子も 閉じられる。 http://www.linux.or.jp/JM/html/LDP_man-pages/man3/fdopen.3.html よって以下のページのL:125は不要です。 http://x68000.q-e-d.net/~68user/net/c-http-2.html |
>>4356 マーブル ありがとうございます。とりあえず POSIX を確認させてください (明日以降)。 http://www.opengroup.org/onlinepubs/009695399/functions/fdopen.html |
>>4357 68user 明日以降と言いつつ今確認してみましたが、POSIX にはそういう記述は ないように見えます。また、Solaris9 のマニュアルにも書いてないように 見えます。 http://www.freebsd.org/cgi/man.cgi?query=fdopen&sektion=3C&manpath=SunOS+5.9 しかし BSD ならば、4.4BSD-Lite2 にはそのような記述があります。 http://www.freebsd.org/cgi/man.cgi?query=fdopen&manpath=4.4BSD+Lite2&format=html Solaris や HP-UX が手元にある方にお願いなのですが、fdclose して fclose した ときにソケットディスクリプタがクローズされるかどうか truss コマンドなどで 確認していただけないでしょうか (わたしのまわりは FreeBSD と Linux しかないので)。 いずれにせよ何かしらの補足は追記したいと考えています。 |
>>4358 68user > fdclose して fclose したときに 「fdopen して fclose したときに」の誤りでした。 ちなみに「UNIX ネットワークプログラミング第2版」からは、この件についての 記述を読み取ることはできませんでした。 |
>>4359 68user 機種依存等深く考えずに書き込んでしまって申し訳ございません。 また知合いに話せる人がいない為に決めつけたような書き込みになってしまったこともお詫びします。 基本的にFILE構造体にfileディスクリプタが含まれているものと理解していたもので、 fclose時に連動してcloseされるかな?と単純に考えてしまいました。 trussで確認した結果が以下でcloseされているようでした(これおもしろいですね) SunOS eibw23 5.9 Generic_112233-03 sun4u sparc SUNW(Solaris8か9) ----------------------------------------------------------- read(0, 0xFF3414EC, 1024) (sleeping...) read(0, "\n", 1024) = 1 llseek(3, 0, SEEK_CUR) = 0 close(3) = 0 read(0, 0xFF3414EC, 1024) (sleeping...) read(0, "\n", 1024) = 1 _exit(0) |
>>4360 マーブル うゎ、アドレス込みで貼っちまった、ハズカシィ |
>>4360 マーブル opensolarisがsolarisとどれだけ違うかわかりませんが、 http://cvs.opensolaris.org/source/xref/on/usr/src/lib/libc/port/stdio/fdopen.c#64 fdの値は単純に渡されているように見えます。 (↑のサイト使い安くて良く使ってます、BSDでこのような感じのページご存知ですか?) |
>>4360 マーブル 昨日は変なことを書いてしまいました。fclose したんだから close するのは 当然ですよね。まぁ fdopen したものはフラッシュだけ行って close しない 実装があっても不思議ではないですが、素直に考えれば close するはず。 よって、125行目の close は削除します。 >>4362 マーブル > (↑のサイト使い安くて良く使ってます、BSDでこのような感じのページご存知ですか?) 普通の cvsweb でよければ、以下のものが cvsgraph が組み込まれているのでよく使います。 http://cvsweb.allbsd.org/cvsweb.cgi/src/lib/libc/stdio/fdopen.c ソース閲覧なら GLOBAL を使ったFreeBSD Source Code Tour が便利ですが、ファイル名が ころころ変わるので URL を保存しておいても役に立たないのがが困りものです。 http://snapshots.jp.freebsd.org/tour/ http://snapshots.jp.freebsd.org/tour/current/userland/cgi-bin/global.cgi?pattern=fdopen&id=&type=definition http://snapshots.jp.freebsd.org/tour/current/userland/S/9687.html#53 OpenSolaris のソースを見られるところは知りませんでした。今後活用させて いただきます。 |
初めましてWindowsユーザですが、仕事上 LinuxやCVSを使うことがあります。 コマンドをなかなか覚えられなくて、いつも参考にさせて頂いています。 |
>>4353 zsh 凄いです。 変換されました。 |
よくパーミッションでrは読む権利を、wは書く権利を、 xは実行する権利を与えるといいますが、それぞれの権利が 与えられている時、いない時は具体的にどのようなコマンド が有効であるのか、いまいちはっきり理解できません。 どなたか詳しくをしえてください。 |
>>4366 anonymous > それぞれの権利が与えられている時、いない時は具体的にどのようなコマンドが > 有効であるのか 何か哲学的なニオイがするので(?)、そもそも私が答えられる内容でも無い気は しますがそれでもよければ教えてください。 ええと、ちょっと見た限りでは書き込み中の「有効」の意味がよくわかりません。 もしかしたら具体的に何か目的があるんでしょうか。 あと、パーミッションが与えられているのはプログラム?読み書きするファイル? |
>>4364 がちゃぴ ありがとうございます。ご意見・ご指摘がありましたら遠慮なくどうぞ。 なお、世の中いろんな人がいますので、文章の一部を削除させていただきました。 削除した部分に関する話題はご遠慮いただきたく思います。ご理解ください。 >>4366 anonymous 紛らわしいのでハンドルを「68user」から「anonymous」と変更しました。 今後は適切なハンドルを使用してください。 |