番号を昇順に並び替えて、抜けている番号を表示したく、以下の様なシェル でやってみたのですが、上手く行きません。 どうすればいいでしょうか。 Solaris8 Bシェルです。 sort test.txt | nawk -v key="" '{if(FNR!=0 && $1!=key) print $1 ; key=$1}' sort test.txt | nawk -v key="" -F"," '{if(FNR!=0 && $1-1!=key) printf("%0.4d\n",key+1); key=$1}' sort test.txt | nawk -v key="" -F"," '{if(FNR!=0 && $1!=key) printf("%0.4d\n",key+1); key=$1}' # cat test.txt 0006 0009 0004 0010 0003 結果 0001 0002 0005 0007 0008 と表示したい。 |
>>4591 いち nawk -v key=1 '{ for(;;){if($1!=key) {print key; key++;} else{key=$1+1; break;}} }' a.txt でできました。 |
>>No. 4588 68user No.4587のS-MSK☆です。 ご回答有難う御座いました。 |
FTP クライアントを作ってみよう (1) FTP プロトコルの概略 |
>管理人様 FTP クライアントを作ってみよう (1) FTP プロトコルの概略 が大変勉強になりました。ありがとうございました。 |
vmstatをファイルへ出力する時に、1行毎に日時を編集したいのですがうまく出来ません。AIXですと下記のスクリプトでうまくいっているのですがsoralisではどのようにしたらよいでしょうか。 vmstat $1 $2 | awk '!/kthr|---|avm/ {printf("%s | ", $0);system("date")}' >> $LOGDIR$DATE |
>>4596 くるみんパパ system関数が使いたいのであればnawkか/usr/xpg4/bin/awkを使用してください。 |
>>4597zshさん nawkで解決しました。助かりました。ありがとうございました。 |
はじめまして。TCP/IPについて素朴な質問があります。 TCP/IPでは、ACKに対するSYNのタイムアウトがあり、 通常のLINUXであれば180秒ほどだと思います。 一方、telnetで存在しないIPを指定すると上記タイムアウトまでかからず、 以下のメッセージが出て接続できません。 Trying 192.168.60.113... telnet: Unable to connect to remote host: No route to host この場合、なぜ上記タイムアウトまで待たないのでしょうか。 telnetコマンドにて 明示的にTCPリトライ回数を指定していると考えていいのでしょうか。 また、このメッセージの意味するところはどういうところなのでしょう? 誰かご存知の方がいたらご教授願います。 |
>>4599 勉強中 直接的な回答ではありませんが、 http://X68000.q-e-d.net/~68user/net/tcp-connect-1.html をご一読ください。なお、EHOSTUNREACH が No route to host です。 |
>68userさん 早速のコメントありがとうございます。 要するにアプリケーションの実装によるということですね。 (つまり、ICMP 終点到達不可メッセージを受信した際に、 ただちにコネクション確立を中止するかしないかというポリシーによるということ) ちなみにftpでもtelnetと同様でした。 |
>>4601 勉強中 > 要するにアプリケーションの実装によるということですね。 いいえ、OS の TCP スタックの実装による、だと思います。 アプリ側で対応する、つまり TCP で接続しつつ、ICMP のエラーを解析という ことが可能かどうかはやったことがないのでわかりませんが、少なくとも ftp や telnet という基本的なアプリがそういう小細工をしている可能性は低いと思います。 |
>>4602 68user > アプリ側で対応する、つまり TCP で接続しつつ、ICMP のエラーを解析という > ことが可能かどうかはやったことがないのでわかりませんが、少なくとも ftp や > telnet という基本的なアプリがそういう小細工をしている可能性は低いと思います。 ICMP のエラーを解析する必要はなかったですね。connect(2) が -1 を返したとき EHOSTUNREACH なら再接続、などとすればアプリ側で対応できます。 とはいえ、やはり ftp や telnet がそういうことをする必然性はないと思います。 |
はじめまして。ネットワークプログラムについて質問させてください。 リミテッドブロードキャスト(255.255.255.255へ)を行いたいのですが、sockaddr_in のアドレス部分に上記を入れても、何故かディレクテッドブロードキャスト(私の環境 では 192.168.1.255 )になってしまいます。正しくリミテッドブロードキャストする 方法はないでしょうか。setsockopt でブロードキャストのフラグを立てる、などは 行っています。環境は FreeBSD & gcc です。 以下、重要部分の抜粋です(エラー処理などは省いています)。 struct sockaddr_in addr; int broadcast = 1; char buf[] = "test"; addr.sin_family = AF_INET; addr.sin_addr.s_addr = inet_addr("255.255.255.255"); addr.sin_port = htons(2000); sock = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP ); setsockopt( sock, SOL_SOCKET, SO_BROADCAST, (char*)&broadcast, sizeof(broadcast) ); sendto( sock, buf, sizeof(buf), 0, (struct sockaddr*)&addr, sizeof(struct sockaddr) ); ごく普通のコードだと思うのですが、パケットをモニターすると、送り先アドレスが ディレクテッドブロードキャストになってしまっています。アドバイスだけでもいいので 助言いただけるとうれしいです。 |
はじめまして。sendmailコマンドについての質問です。 [FROM:]や[TO:]フィールドに、アドレスとはべつに別名を指定し実行したところ、 エラーが出力されました。 -------------<実行コマンド>---------------------- sendmail -t MIME-Version: 1.0 From: hoge株式会社<hoge@hoge.co.jp> To: huge株式会社御中<huge@huge.co.jp> Subject: 2006年05月25日の[データ] Content-Type: text/plain; charset=iso-2022-jp 2006年05月25日 14時53分現在の データをお送りいたします。 . ------------------------------------------------ TOやFROMフィールドでアドレスとはべつに別名を付けることは可能なのでしょうか? よろしくお願いします。 OS:Solaris 8 |
以下のページの「#inlcude <stdlib.h>」、スペルミスしている様です。 http://x68000.q-e-d.net/~68user/unix/pickup?getenv 正しくは「#include <stdlib.h>」かと…。 ご確認ください。 |
初めまして、soralisのC言語について質問させてください 10年以上前にsolalis v4.1で開発してもらったのが あるのですが、コンピュータ、プリンタが古くなり 最新のものに変えたいとメーカに相談した所 C言語でXVEIWが使われているので最初から作り直しと なりますといわれました 1.ほんとうに最初からの作りなおしになるのか? ソフトはあまり変えず 現在市販のPC、プリンタを使いたいだけなんですが OSは問わない 以上なんですが 業者のいいなりになるしかないのか (修正費用がかなりかかるので) 教えてもらえないでしょうか |
SPAM がウザすぎなので、 BBQ http://bbq.uso800.net/ を組み込んでみました。BBQ に引っかかると Internal Server Error になります。 書けない場合は書けねぇぞ! と書き込んでください (その際も Internal Server Error になりますが)。しばらくはログを観察するようにしますので、可能であれば 対処します。 さてうまくいきますかねぇ。 |
>>4604 COM わかりませんが、Linux で動かしてパケットを見ると、255.255.255.255 宛に 飛んでいました。 >>4605 yuukun > エラーが出力されました。 エラー内容を書きましょう。 >>4606 kojp-jp getenv と putenv 両方間違っていたので修正いたしました。 ありがとうございました。 >>4607 analog XView ならば、わたしも同様に言います。理由は以下のとおり。 - 現在は、XView はほとんど使われていない - よってほとんどの開発者には XView の知識がない - 勉強しようにも、解説本が売られていない (と思われる) - 勉強しても、その知識を他で生かせる可能性が低い > ほんとうに最初からの作りなおしになるのか? 基本的には OpenWindows 環境がある Solaris10 などでは動くはずですが、 とにかく XView も OpenWindows も時代遅れな環境ですので、修正が必要な 部分はそれなりにあると思われます。 よって XView の技術者がいる会社であれば、修正量・移行リスクを見積もる ことができ、修正作業も行えるでしょう。 http://business.rakuten.co.jp/ などでそういう会社をがんばって探すか、 作り直しを受け入れるか、です。 ちなみに、わたしが今いる環境には技術者が数十名いますが、おそらく XView がわかる人はいないと思われます。昔いた会社は UNIX を作って いたくらいなので探せばいるでしょう。ただし、いたとしても 40〜50歳の おじさんだと思われます。すでに管理職だったり、工数が見合わなかったりで、 受けたがらないでしょうね。 |
>>4609 68user ご返答ありがとうございます。Linux ではそれでうまくいくのですね。 どうしてもダメだったので、rawIP を使い、MAC アドレスを FF:FF:FF:FF:FF:FF に セットすることで解決しました。ありがとうございました。 |
>>4608 68user BBQ 導入後 24時間で、 - 成功 20件 (SPAM を SPAM と判定できたケース) - 失敗 12件 (SPAM をそのまま通してしまったケース) でした。それなりにがんばってくれたものの、毎日12件削除するのは面倒。 URLBL のチェックも追加しようかな。 |
lsコマンドを使用してファイル数を取り出そうとしています。 ファイルが存在しない場合、「No such file or directory」 を表示しないよう、位置パラメータでファイル数を求めています。 ファイルが存在する場合は、問題ないのですが、ファイルが存在 しない場合、必ず”1”となってしまいます。 どうしてなのでしょうか。また、上手くするにはどうしたらよい のでしょうか。 環境は、Solaris8、Bシェル です。 ------------------------ #!/bin/sh # if [ $# -ne 1 ] ; then exit 1 fi ymd=$1 set -- `ls *_$ymd*.csv 2>/dev/null` echo $# |
SPAMひどいですね・・・ >>4652 はじめ 位置パラメタの数は 1 となっているのは スクリプトに引数を与えている為です。 引数を変数に格納後、shift させれば OK です。 |
>>4659 zsh >引数を変数に格納後、shift させれば OK です。 shift するということには気がつきませんでした。 ありがとうございます。 再設定すれば良いのかと思い set '' set -- でやってみたのですが。 |
>位置パラメタの数は 1 となっているのは >スクリプトに引数を与えている為です。 >引数を変数に格納後、shift させれば OK です。 質問では、引数を1つにしていましたが、 引数が複数あった場合は、引数の数分、shiftしないと いけないのでしょうか。 一発で、shiftすること可能なのでしょうか。 |
はじめまして。 [全文検索機能] http://x68000.q-e-d.net/~68user/webcgi/search-1.html ↑のページの eval 法、大変参考になりました。 条件固定でループするときに、余計なものを除けるのがいいですね。 eval ってなんか最終手段っぽくて敬遠してましたが、これからは視野にいれて組んでみたいと思います。 どうもありがとうございました。 |
>>4662 はじめ > 一発で、shiftすること可能なのでしょうか。 shift $# としてください。 |
>>4665 zsh >shift $# ありがとうございます。 |
はじめまして。大変わかりやすいページで非常にためになっております。 さて、間違いがあったら掲示板で指摘してくださいとありましたので、 書かせていただきます。 すでにお気づきなら申し訳ありません。 http-client-2.c のコードで113行目の以下の部分ですが、 113: fprintf(fp, "Host: %s:%d\r\n", host, port); 最後の引数は port ではなく server.sin_port ではないでしょうか? 82〜91行目でポート番号を指定していなかったときの処理がありますが、 ここで server.sin_port を用いられているため 最後まで port は 0 のままでした。 |
こんにちわ。 Solaris7 のftp についてどなたかご存知でしたらご教授ください。 Solaris8 のような、あるユーザにはftpを出来なくするような機能「/etc/ftpd/ftpusers」があるのでしょうか。 皆様よろしくお願い致します。 |
Pthreadにて、スレッドをあらかじめ生成しておいて、 何らかのトリガーで後から起動するって、 どのようにPGすれば良いのでしょうか? よろしくお願い致します。 |
>4669 man が入ってない環境なんでしょうか? docs.sun.com に行くとドキュメント群が公開されてますよ。 http://docs.sun.com/app/docs/doc/805-3173/6j31cpluf?q=ftpusers&a=view を見る限り、solaris 7 付属の ftpd は /etc 直下の ftpusers を 参照するみたいですね。もし、無かったら作ってみましょう。 |
適用済みパッチを調べるものとして ・showrev -p ・patchadd -p の2つがあると思うのですが この2つの違い等を知っている方がいらっしゃいましたら 教えていただきたいです。(UNIX の部屋には無かったので。) patchadd -p は root 権限のみ実行できたという違いだけでしょうか? (新しいパッチでは root でなくとも実行できる。) よろしくお願いいたします。 |
>4672 ご返信が遅くなりまして申し訳ございませんでした。 ドキュメント参考に、ディレクトリ(ftpd)作成、ファイル作成して、 ftp禁止ユーザを制御できるようになりました。 しっかりドキュメントを参照しなければいけませんでした。 これからは、まずドキュメント参照を心掛けたいと思います。 hogeさん、大切なお時間ありがとうございました。 |
こんにちは。 vmstatを起動すると、「vmstat: 0551-129 knlist が失敗しました。」という エラーで情報が取得出来ません。何が考えられますでしょうか。 ちなみにOSの再起動を試みましたが、解決されませんでした。 |
>>4677 まさしくん はじめまして。 御質問のキーワードを検索すると、以下のページがヒットしました。 参考になりませんでしょうか? http://unix.derkeiler.com/Mailing-Lists/AIX-L/2003-12/0105.html |
>>4677 まさしくん 私が使用しているAIXの場合の話ですが、このエラーは「ある種のカーネル・メモリの問題」で発生する様です。 /usr/lib/boot/unix_mp ファイルのサイズがゼロとなっているはずですので、その場合には他のサーバー(同じOSの同じバージョンが良いですね)から同じファイルをコピーすることで復旧出来る様です。 残念ながら、何故このファイルのサイズがゼロになるかまでは分かりませんが、上記の通りファイルをコピーし直すか、/unix のリンクが失われている場合はリンクを張り直すと言うことで解消する様です。 |
はじめまして。 とても初歩的な質問で恐縮ですが、 RedHat Enterprise 4で、/var/log/messages 内に格納される情報が 日付 時間 ホスト名 プログラム名 メッセージ の順番で格納されているのはわかるのですが、 それぞれの最大文字数についてどなたかご教授願えませんか? よろしくお願いいたします。 |