68user's page 掲示板

Prev< No. 4591〜4680> Next  [最新発言に戻る] [過去ログ一覧]
No. 4591 # いち 2006/04/24 (月) 21:51:46
番号を昇順に並び替えて、抜けている番号を表示したく、以下の様なシェル
でやってみたのですが、上手く行きません。
どうすればいいでしょうか。
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
と表示したい。

No. 4592 # いち 2006/04/25 (火) 16:52:15
>>4591 いち

nawk -v key=1 '{ for(;;){if($1!=key) {print key; key++;} else{key=$1+1; break;}} }' a.txt
でできました。

No. 4593 # S-MSK☆ 2006/05/01 (月) 14:44:56
>>No. 4588 68user
No.4587のS-MSK☆です。
ご回答有難う御座いました。

No. 4594 # shimizu [E-mail] 2006/05/04 (木) 11:04:32
FTP クライアントを作ってみよう (1) FTP プロトコルの概略

No. 4595 # shimizu [E-mail] 2006/05/04 (木) 11:05:02
>管理人様

FTP クライアントを作ってみよう (1) FTP プロトコルの概略

が大変勉強になりました。ありがとうございました。

No. 4596 # くるみんパパ 2006/05/10 (水) 11:59:59
vmstatをファイルへ出力する時に、1行毎に日時を編集したいのですがうまく出来ません。AIXですと下記のスクリプトでうまくいっているのですがsoralisではどのようにしたらよいでしょうか。

vmstat $1 $2 | awk '!/kthr|---|avm/ {printf("%s | ", $0);system("date")}' >> $LOGDIR$DATE

No. 4597 # zsh 2006/05/10 (水) 13:58:02
>>4596 くるみんパパ
system関数が使いたいのであればnawkか/usr/xpg4/bin/awkを使用してください。

No. 4598 # くるみんパパ 2006/05/10 (水) 14:52:42
>>4597zshさん
nawkで解決しました。助かりました。ありがとうございました。

No. 4599 # 勉強中 2006/05/11 (木) 21:58:28
はじめまして。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リトライ回数を指定していると考えていいのでしょうか。
また、このメッセージの意味するところはどういうところなのでしょう?
誰かご存知の方がいたらご教授願います。

No. 4600 # 68user 2006/05/11 (木) 22:19:01
>>4599 勉強中
直接的な回答ではありませんが、
    http://X68000.q-e-d.net/~68user/net/tcp-connect-1.html
をご一読ください。なお、EHOSTUNREACH が No route to host です。

No. 4601 # 勉強中 2006/05/12 (金) 00:22:27
>68userさん
早速のコメントありがとうございます。
要するにアプリケーションの実装によるということですね。
(つまり、ICMP 終点到達不可メッセージを受信した際に、
    ただちにコネクション確立を中止するかしないかというポリシーによるということ)
ちなみにftpでもtelnetと同様でした。

No. 4602 # 68user 2006/05/12 (金) 11:39:16
>>4601 勉強中
> 要するにアプリケーションの実装によるということですね。
いいえ、OS の TCP スタックの実装による、だと思います。

アプリ側で対応する、つまり TCP で接続しつつ、ICMP のエラーを解析という
ことが可能かどうかはやったことがないのでわかりませんが、少なくとも ftp や
telnet という基本的なアプリがそういう小細工をしている可能性は低いと思います。

No. 4603 # 68user 2006/05/13 (土) 19:47:43
>>4602 68user
> アプリ側で対応する、つまり TCP で接続しつつ、ICMP のエラーを解析という
> ことが可能かどうかはやったことがないのでわかりませんが、少なくとも ftp や
> telnet という基本的なアプリがそういう小細工をしている可能性は低いと思います。
ICMP のエラーを解析する必要はなかったですね。connect(2) が -1 を返したとき
EHOSTUNREACH なら再接続、などとすればアプリ側で対応できます。

とはいえ、やはり ftp や telnet がそういうことをする必然性はないと思います。

No. 4604 # COM 2006/05/16 (火) 18:01:08
はじめまして。ネットワークプログラムについて質問させてください。
リミテッドブロードキャスト(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) );

ごく普通のコードだと思うのですが、パケットをモニターすると、送り先アドレスが
ディレクテッドブロードキャストになってしまっています。アドバイスだけでもいいので
助言いただけるとうれしいです。

No. 4605 # yuukun 2006/05/25 (木) 15:21:00
はじめまして。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

No. 4606 # kojp-jp 2006/05/29 (月) 13:17:45
以下のページの「#inlcude <stdlib.h>」、スペルミスしている様です。

    http://x68000.q-e-d.net/~68user/unix/pickup?getenv

正しくは「#include <stdlib.h>」かと…。

ご確認ください。

No. 4607 # analog 2006/05/29 (月) 13:46:40
初めまして、soralisのC言語について質問させてください
10年以上前にsolalis v4.1で開発してもらったのが
あるのですが、コンピュータ、プリンタが古くなり
最新のものに変えたいとメーカに相談した所
C言語でXVEIWが使われているので最初から作り直しと
なりますといわれました
1.ほんとうに最初からの作りなおしになるのか?
        ソフトはあまり変えず
        現在市販のPC、プリンタを使いたいだけなんですが
        OSは問わない
    
以上なんですが
業者のいいなりになるしかないのか
(修正費用がかなりかかるので)
教えてもらえないでしょうか

No. 4608 # 68user 2006/06/01 (木) 16:48:43
SPAM がウザすぎなので、
    BBQ http://bbq.uso800.net/
を組み込んでみました。BBQ に引っかかると Internal Server Error になります。
書けない場合は書けねぇぞ! と書き込んでください (その際も Internal Server
Error になりますが)。しばらくはログを観察するようにしますので、可能であれば
対処します。

さてうまくいきますかねぇ。

No. 4609 # 68user 2006/06/01 (木) 17:24:53
>>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歳の
おじさんだと思われます。すでに管理職だったり、工数が見合わなかったりで、
受けたがらないでしょうね。

No. 4618 # COM 2006/06/02 (金) 11:24:28
>>4609 68user
ご返答ありがとうございます。Linux ではそれでうまくいくのですね。
どうしてもダメだったので、rawIP を使い、MAC アドレスを FF:FF:FF:FF:FF:FF に
セットすることで解決しました。ありがとうございました。

No. 4619 # 68user 2006/06/02 (金) 16:31:55
>>4608 68user
BBQ 導入後 24時間で、
    - 成功 20件 (SPAM を SPAM と判定できたケース)
    - 失敗 12件 (SPAM をそのまま通してしまったケース)
でした。それなりにがんばってくれたものの、毎日12件削除するのは面倒。
URLBL のチェックも追加しようかな。

No. 4652 # はじめ 2006/06/05 (月) 18:30:05
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 $#

No. 4659 # zsh 2006/06/06 (火) 10:35:36
SPAMひどいですね・・・

>>4652 はじめ
位置パラメタの数は 1 となっているのは
スクリプトに引数を与えている為です。
引数を変数に格納後、shift させれば OK です。

No. 4660 # はじめ 2006/06/06 (火) 21:24:43
>>4659 zsh

>引数を変数に格納後、shift させれば OK です。
shift するということには気がつきませんでした。
ありがとうございます。

再設定すれば良いのかと思い
set ''
set --
でやってみたのですが。

No. 4662 # はじめ 2006/06/07 (水) 02:09:26
>位置パラメタの数は 1 となっているのは
>スクリプトに引数を与えている為です。
>引数を変数に格納後、shift させれば OK です。

質問では、引数を1つにしていましたが、
引数が複数あった場合は、引数の数分、shiftしないと
いけないのでしょうか。
一発で、shiftすること可能なのでしょうか。

No. 4664 # nan 2006/06/07 (水) 07:12:14
はじめまして。

[全文検索機能]
http://x68000.q-e-d.net/~68user/webcgi/search-1.html

↑のページの eval 法、大変参考になりました。
条件固定でループするときに、余計なものを除けるのがいいですね。
eval ってなんか最終手段っぽくて敬遠してましたが、これからは視野にいれて組んでみたいと思います。
どうもありがとうございました。

No. 4665 # zsh 2006/06/07 (水) 11:58:02
>>4662 はじめ
> 一発で、shiftすること可能なのでしょうか。

shift $#
としてください。

No. 4666 # はじめ 2006/06/07 (水) 12:40:07
>>4665 zsh

>shift $#
ありがとうございます。

No. 4667 # ビンゴ中西 2006/07/08 (土) 19:50:06
はじめまして。大変わかりやすいページで非常にためになっております。

さて、間違いがあったら掲示板で指摘してくださいとありましたので、
書かせていただきます。 すでにお気づきなら申し訳ありません。

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 のままでした。

No. 4669 # わんこ 2006/07/14 (金) 17:58:08
こんにちわ。
Solaris7 のftp についてどなたかご存知でしたらご教授ください。

Solaris8 のような、あるユーザにはftpを出来なくするような機能「/etc/ftpd/ftpusers」があるのでしょうか。

皆様よろしくお願い致します。

No. 4671 # ようこ 2006/07/18 (火) 22:56:06
Pthreadにて、スレッドをあらかじめ生成しておいて、
何らかのトリガーで後から起動するって、
どのようにPGすれば良いのでしょうか?
よろしくお願い致します。

No. 4672 # hoge 2006/07/19 (水) 17:21:38
>4669
man が入ってない環境なんでしょうか?
docs.sun.com に行くとドキュメント群が公開されてますよ。

http://docs.sun.com/app/docs/doc/805-3173/6j31cpluf?q=ftpusers&a=view
を見る限り、solaris 7 付属の ftpd は /etc 直下の ftpusers を
参照するみたいですね。もし、無かったら作ってみましょう。

No. 4673 # hogehoge 2006/07/20 (木) 11:35:21
適用済みパッチを調べるものとして
・showrev -p
・patchadd -p
の2つがあると思うのですが
この2つの違い等を知っている方がいらっしゃいましたら
教えていただきたいです。(UNIX の部屋には無かったので。)

patchadd -p は root 権限のみ実行できたという違いだけでしょうか?
(新しいパッチでは root でなくとも実行できる。)

よろしくお願いいたします。

No. 4676 # わんこ 2006/07/24 (月) 18:01:25
>4672

ご返信が遅くなりまして申し訳ございませんでした。

ドキュメント参考に、ディレクトリ(ftpd)作成、ファイル作成して、
ftp禁止ユーザを制御できるようになりました。

しっかりドキュメントを参照しなければいけませんでした。
これからは、まずドキュメント参照を心掛けたいと思います。

hogeさん、大切なお時間ありがとうございました。

No. 4677 # まさしくん 2006/08/01 (火) 14:10:48
こんにちは。
vmstatを起動すると、「vmstat: 0551-129 knlist が失敗しました。」という
エラーで情報が取得出来ません。何が考えられますでしょうか。
ちなみにOSの再起動を試みましたが、解決されませんでした。

No. 4678 # バンガード 2006/08/02 (水) 09:04:28
>>4677 まさしくん
はじめまして。
御質問のキーワードを検索すると、以下のページがヒットしました。
参考になりませんでしょうか?
http://unix.derkeiler.com/Mailing-Lists/AIX-L/2003-12/0105.html

No. 4679 # バンガード [E-mail] 2006/08/02 (水) 09:19:42
>>4677 まさしくん
私が使用しているAIXの場合の話ですが、このエラーは「ある種のカーネル・メモリの問題」で発生する様です。
/usr/lib/boot/unix_mp ファイルのサイズがゼロとなっているはずですので、その場合には他のサーバー(同じOSの同じバージョンが良いですね)から同じファイルをコピーすることで復旧出来る様です。

残念ながら、何故このファイルのサイズがゼロになるかまでは分かりませんが、上記の通りファイルをコピーし直すか、/unix のリンクが失われている場合はリンクを張り直すと言うことで解消する様です。

No. 4680 # yu-ya! 2006/08/02 (水) 09:41:06
はじめまして。
とても初歩的な質問で恐縮ですが、
RedHat Enterprise 4で、/var/log/messages 内に格納される情報が
    日付 時間 ホスト名 プログラム名 メッセージ
の順番で格納されているのはわかるのですが、
それぞれの最大文字数についてどなたかご教授願えませんか?

よろしくお願いいたします。

Prev< No. 4591〜4680> Next  [最新発言に戻る] [過去ログ一覧]