>>4574 さん、ありがとうございます。 # mail 'dareka@[172.16.10.3]' を指定すると、 Diagnostic-Code; X-Postfix; host 172.16.10.3[172.16.10.3] said: 550 5.1.1 <dareka@[172.16.10.3]>... Not local user, server is not relaid. Recipient error (in reply to RCPT TO command) と言われます。 試みに dareka というコンピューターユーザーを W に作ってみましたが 現象は変わりませんでした ;;; 教えていただいたリンクをたどって http://www.kobitosan.net/postfix/jhtml/faq.html#intranet に到達していくつかのことをやってみました。 ・/etc/postfix/main.cf で disable_dns_lookups = yes と書けば /etc/hosts を見に行って W.windows.net の名前解決をしてくれる? =>ダメでした(dareka@W.windows.net で host not found になる) ・さらに /etc/postfix/main.cf で relayhost = W.windows.net と書く =>同じ状況です。 (# mail dareka@W.windows.net で host not found、 # mail 'dareka[@172.10.16.3]' で not a local user) ・/etc/postfix/main.cf で relayhost = W.windows.net と書く =>同じ状況です。 (# mail dareka@W.windows.net で host not found、 # mail 'dareka[@172.10.16.3]' で not a local user) これ、W.windows.net の smtp サーバーである pmail が POP before SMTP auth をやっているのが原因かも・・・。 (フリー版の制約で切れない) ・relayhost の設定をやめ、 transport_maps = dbm:/etc/postfix/transport と設定する。 /etc/postfix/transport の中身を windows.net :[W.windows.net] .windows.net :[W.windows.net] にし、postmap /etc/postfix/transport をしてから、 postfix reload する。 (/etc/postfix/transport の前に hash、db、dbm などの何をつけるかは postmap が生成するデータベースによる。 間違うと postfix reload で怒られる) =>同じ状況です。 ・/etc/postfix/transport の中身を windows.net :[172.16.10.3] .windows.net :[172.16.10.3] とか windows.net smtp:[W.windows.net] .windows.net smtp:[W.windows.net] とか windows.net smtp:[172.16.10.3] .windows.net smtp:[172.16.10.3] とかにしてみる。 =>同じ状況です。。。 ううーん、困った。 でも人に聞きながらやってると整理がついていいですね (^^) |
>>4547 ありがとうございます。 どうも、無理みたいですね。 1年。つまり、同じ年ということであるのならば、何とかできるの でしょうが、年をまたいでしまうと無理ですね。 >Jan や Feb のソートについては、sed で 01 や 02 に置換すれば >何とでもできるでしょう。 すみません。方法教えてください。 > >>4567 まんたろう > は現実的な落としどころと考えます。 現実な落としどころとは。? |
BCCでwindowsプログラムをコンパイルしようとすると 「外部シンボル '_main' が未解決」というのが出てしまいます。 「-WオプションをつけてコンパイルすればWindowsアプリができます」と本に 書いてあるのですが、どうすればいいのかわかりません |
以下の様なカンマ区切りのファイルがあります。 001,a2,a3,a4,a5,a6,a7,a8,a9,a10,,,,,, 002,a2,a3,a4,a5,a6,a7,a8,a9,a10,111:222,123:456,001:002,100:200,A01:A02,0:1 003,a2,a3,a4,a5,a6,a7,a8,a9,a10,111:222,123:,:,:,A01:A02,: フィールドの11カラム以降からは、コロン区切りで複数設定されている場合がある ので、複数行に分けたいのです。 以下の様に、 001,a2,a3,a4,a5,a6,a7,a8,a9,a10,,,,,, 002,a2,a3,a4,a5,a6,a7,a8,a9,a10,111,123,001,100,A01,0 002,a2,a3,a4,a5,a6,a7,a8,a9,a10,222,456,002,200,A02,1 003,a2,a3,a4,a5,a6,a7,a8,a9,a10,111,123,,,A01, 003,a2,a3,a4,a5,a6,a7,a8,a9,a10,222,,,,A02, に編集し、ファイルに出力したいのですが、11カラム以降の処理が上手く行きません。 3通りほど、試してみたのですが、それぞれ駄目でした。 どこがいけないのかとどうすればよいのかを教えてください。 環境は、 Solaris8、Bシェル です。 No.1 ----------------------------------------------------------------- #!/bin/sh # if [ $# -eq 0 ] ; then echo "$0 FileName" exit 1 fi FILE=$1 OUT_FILE=kekka.log rm ${OUT_FILE} > /dev/null 2>&1 nawk -v OUT=${OUT_FILE} ' function max_desc(lstadr,lst) { m=split(lstadr,lst,":") ; return m ; } { cnt=1 ; n=split($0,arglst,",") ; for(i=11;i<=n;i++) { m=max_desc(arglst[i],lst["${i}"]) ; if (m>cnt) { cnt=m ; } } no=1 ; for(i=1; i<=cnt; i++) { for(j=1; j<=n; j++) { if (j==2) { printf("%d,",no++) >> OUT ; } else if (j==11 || j==12 || j==13 || j==14 || j==15 || j==16) { printf("%s,",lst["${j}"][i]) >> OUT ; } else { printf("%s,",arglst[j]) >> OUT ; } } printf("\n") >> OUT ; } }' ${FILE} exit 0 No.2 ----------------------------------------------------------------- #!/bin/sh # if [ $# -eq 0 ] ; then echo "$0 FileName" exit 1 fi FILE=$1 OUT_FILE=kekka.log rm ${OUT_FILE} > /dev/null 2>&1 nawk -v OUT=${OUT_FILE} ' function max_desc(lstadr,lst) { cnt=split(lstadr,lst,":") ; return cnt ; } { num=1 ; n=split($0,arglst,",") ; for(i=11;i<=n;i++) { ret=max_desc(arglst[i],lst[++x,y]) ; if (ret>num) { num=ret ; } } nf=x ; no=1 ; for(y=1; y<=num; y++) { for(j=1; j<=10; j++) { if (j==2) { printf("%d,",no++) >> OUT ; } else { printf("%s,",arglst[j]) >> OUT ; } } for(x=1; x<=nf; x++) { printf("%s,",lst[x,y]) >> OUT ; } printf("\n") >> OUT ; } }' ${FILE} exit 0 No.3 ----------------------------------------------------------------- #!/bin/sh # if [ $# -eq 0 ] ; then echo "$0 FileName" exit 1 fi FILE=$1 OUT_FILE=kekka.log rm ${OUT_FILE} > /dev/null 2>&1 nawk -v OUT=${OUT_FILE} ' function max_desc(lstadr,lst,x) { cnt=split(lstadr,arrlst,":") ; for(j=1;j<=cnt;j++) { lst[x,j]=arrlst[j] ; } return cnt ; } { num=1 ; n=split($0,arglst,",") ; for(i=11;i<=n;i++) { ret=max_desc(arglst[i],lst[++x,y],x) ; if (ret>num) { num=ret ; } } nf=x ; no=1 ; for(y=1; y<=num; y++) { for(j=1; j<=10; j++) { if (j==2) { printf("%d,",no++) >> OUT ; } else { printf("%s,",arglst[j]) >> OUT ; } } for(x=1; x<=nf; x++) { printf("%s,",lst[x,y]) >> OUT ; } printf("\n") >> OUT ; } }' ${FILE} exit 0 |
>>4579 べた これが賢いやり方とも思えませんが、一応作ってみました。 ------ $ cat a.awk BEGIN { FS=","; chk_col=11; } { if ($chk_col ~ /:/) { str_head=head_string(); split_num=split($chk_col, str_foot, ":"); for (i=1; i<=split_num; i++) { for (j=chk_col+1; j<=NF; j++) { split($j, col_buf, ":"); str_foot[i]=sprintf("%s,%s", str_foot[i], col_buf[i]); } print str_head "," str_foot[i]; } } else { print; } } function head_string() { str_buf=$1; for (k=2; k<chk_col; k++) { str_buf=sprintf("%s,%s", str_buf, $k); } return str_buf; } ------ ------ $ cat a 001,a2,a3,a4,a5,a6,a7,a8,a9,a10,,,,,, 002,a2,a3,a4,a5,a6,a7,a8,a9,a10,111:222,123:456,001:002,100:200,A01:A02,0:1 003,a2,a3,a4,a5,a6,a7,a8,a9,a10,111:222,123:,:,:,A01:A02,: ------ ------ $ awk -f a.awk a 001,a2,a3,a4,a5,a6,a7,a8,a9,a10,,,,,, 002,a2,a3,a4,a5,a6,a7,a8,a9,a10,111,123,001,100,A01,0 002,a2,a3,a4,a5,a6,a7,a8,a9,a10,222,456,002,200,A02,1 003,a2,a3,a4,a5,a6,a7,a8,a9,a10,111,123,,,A01, 003,a2,a3,a4,a5,a6,a7,a8,a9,a10,222,,,,A02, ------ >>4571 68user 今更ですが、Solarisでは $ echo "Apr 02 12:25:00 ===" | sort -M - logfile | \ sort -n -k2,3 | cat -n | grep "===" | awk '{print $1}' 等としないとダメみたいです。 |
>>4580 zsh zshさん、ありがとうございます。 一応、動いたのですが、フィールド2の値を別の 文字置き換えたいのですが、どうすればよいのですか。 ファイル11以降に「:」で区切られたデータが存在した 場合、データの数分順番に番号を振りたいのです。 なければ、デフォルトで”1”としたいのです。 ----- $ cat a 001,a2,a3,a4,a5,a6,a7,a8,a9,a10,,,,,, 002,a2,a3,a4,a5,a6,a7,a8,a9,a10,111:222,123:456,001:002,100:200,A01:A02,0:1 003,a2,a3,a4,a5,a6,a7,a8,a9,a10,111:222,123:,:,:,A01:A02,: ----- 結果 001,1,a3,a4,a5,a6,a7,a8,a9,a10,,,,,, 002,1,a3,a4,a5,a6,a7,a8,a9,a10,111,123,001,100,A01,0 002,2,a3,a4,a5,a6,a7,a8,a9,a10,222,456,002,200,A02,1 003,1,a3,a4,a5,a6,a7,a8,a9,a10,111,123,,,A01, 003,2,a3,a4,a5,a6,a7,a8,a9,a10,222,,,,A02, |
>>4581 べた 適当に直してみました。 ------ BEGIN{ FS=","; chk_col=11; } { str_head_1=$1; if($chk_col ~ /:/) { str_head_2=head_string(chk_col); split_num=split($chk_col, str_foot, ":"); for (i=1; i<=split_num; i++) { for (j=chk_col+1; j<=NF; j++) { split($j, col_buf, ":"); str_foot[i]=sprintf("%s,%s", str_foot[i], col_buf[i]); } print str_head_1 "," i "," str_head_2 "," str_foot[i]; } } else { str_head_2=head_string(NF); print str_head_1 ",1," str_head_2; } } function head_string(chk_point) { str_buf=$3; for (k=3; k<chk_point; k++) { str_buf=sprintf("%s,%s", str_buf, $k); } return str_buf; } ------ |
>>4582 zsh zshさん、ありがとうございます。 >str_head_2=head_string(NF+1); >for (k=4; k<chk_point; k++) { の行を修正したら期待する結果が得られました。 ただ、ファイルのフォーマットに規則性がないことがわかり、 データによっては、正しく出力されないものがでてきました。 フィールド11に、「:」が存在しないデータがあるのです。 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,111,123,SSS,A01,,: a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,,,,123:456:789:100:100,A01:A02:A03:3A:NTT0001, 「 if($chk_col ~ /:/) {」 の判定を増やし、フィールド番号を取得できればできますか。 |
>>4582 zsh >>4583 べた 一応、動きます。 以下のようになるのでしょうか。 BEGIN{ FS=","; chk_col=11; } { str_head_1=$1; split_num=chk_comma_max(NF); if(split_num!=0) { str_head_2=head_string(chk_col); split($chk_col, str_foot, ":"); for (i=1; i<=split_num; i++) { for (j=chk_col+1; j<=NF; j++) { split($j, col_buf, ":"); str_foot[i]=sprintf("%s,%s", str_foot[i], col_buf[i]); } print str_head_1 "," i "," str_head_2 "," str_foot[i]; } } else { str_head_2=head_string(NF+1); print str_head_1 ",1," str_head_2; } } function chk_comma_max(chk_point) { comma_num=0; for (k=chk_col; k<=chk_point; k++) { if($k ~ /:/) { comma_num=split($k, s, ":"); break; } } return comma_num; } function head_string(chk_point) { str_buf=$3; for (k=4; k<chk_point; k++) { str_buf=sprintf("%s,%s", str_buf, $k); } return str_buf; } |
>>4579 べた No.1 m=max_desc(arglst[i],lst["${i}"]) ; 添え字を利用した配列でいいのかな。 あまり利用したことはないのでなんとも入れないが、こういうところで 使えないのではないでしょうか。 添え字にマッチする文字が出てきたときに、何かするのではなかった かと思います。 No.2、No.3 多次元配列の使い方がおかしいのではないかと思います。 データをセットする側が多次元配列や、アドレス渡しの戻りができて いない。たぶん、縦軸(列)の添え字の値が正しくない。 縦軸(列)の値ってちゃんととれてますか。 |
>>4579 べた 多次元配列の使い方が正しいか問題はありますが、書き込みがあった シェルを使用して、多次元配列で動くのを作ってみました。 一応、動きますが。 ----------------------- #!/bin/sh # if [ $# -eq 0 ]; then echo "$0 FileName" exit 1 fi FILE=$1 OUT_FILE=kekka.log rm ${OUT_FILE} > /dev/null 2>&1 nawk -v OUT=${OUT_FILE} ' function max_desc(lstadr,lst,x,y) { cnt=split(lstadr,arrlst,":"); for(y=1;y<=cnt;y++) { lst[x,y]=arrlst[y]; } return cnt; } { num=1; row=0; col=0; n=split($0,arglst,","); for(i=11;i<=n;i++) { ret=max_desc(arglst[i],lst,++row,col); if (ret>num) { num=ret; } } seqno=1; for(y=1; y<=num; y++) { for(j=1; j<=10; j++) { if (j==2) { printf("%d,",seqno++) >> OUT ; } else { printf("%s,",arglst[j]) >> OUT; } } for(x=1; x<=row; x++) { printf("%s",lst[x,y]) >> OUT; if (x!=row) { printf("%s",",") >> OUT; } } printf("\n") >> OUT; } for(x=1; x<=row; x++) { for(y=1; y<=num; y++) { delete lst[x,y]; } } }' ${FILE} exit 0 ----------------------- |
あるCシェルの本でファイル検査演算子「-f」の意味は 「ファイルは普通のファイル」とあるのですが、 普通の定義が分かりません。 また、逆に普通ではないファイルとはどういったもの になるのでしょうか?? ご回答頂ければ、幸いです。 宜しくお願い致します。 |
>>4575 ふくし もう解決されているとは思いますが一応。 Postfix に hosts を参照させるのが一番の早道かつ王道だと思いますが わたしは Postfix を知らないので、識者のいるメーリングリストなどで 質問するのがよいかと思います。 >>4587 S-MSK☆ > 「ファイルは普通のファイル」とあるのですが、 > 普通の定義が分かりません。 csh 的には、stat(2) した結果の st_mode (構造体 stat のメンバ) に対して、 通常ファイル判定マクロ S_ISREG が真を返したら、「普通」です。 では S_ISREG がどういうケースで真を返すかというと、vfs の vtype の 値が VREG であるときです (vtype はファイル作成時に決定され、ファイル システムに記録される)。 では vfs の vtype の値が VREG であるのはどういうときかというと、 ファイルシステム依存です。ただし一般的な UFS で言うと、vtype は 1. シンボリックリンク 2. ソケット 3. FIFO (名前付きパイプ) 4. デバイスファイル (キャラクタデバイス・ブロックデバイス) と 5. 通常ファイル くらいです。よって、大抵の場合 1〜4 に当てはまらないなら通常ファイル といえます。 実際は、Solaris Door とか、VxFS 圧縮ファイルとか、HP-UX のネットワーク特殊 ファイルなどわけのわからんのがありますので、プログラムとしては 「1〜4 に当てはまらない場合は通常ファイル」 などという仮定はせず、素直に -f を使いましょう。 |
UNIX環境のAとBというプロセス間でsocket通信を行っています。(AF_UNIX指定) 一度、ソケットをcloseして、Bが再接続(connect)するとエラーになる場合があります。 errnoが何で返却されているのかわからないのですが。 たとえばEADDRINUSE の場合の対応策を教えて下さい。 |
番号を昇順に並び替えて、抜けている番号を表示したく、以下の様なシェル でやってみたのですが、上手く行きません。 どうすればいいでしょうか。 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 です。 |