68user's page 掲示板

Prev< No. 1277〜1334> Next  [最新発言に戻る] [過去ログ一覧]
No. 1277 # 超初心者 [E-mail] 2000/10/20 (金) 16:16:55
68userさん、hsjさん。返信ありがとうございます。
やはりそうですか・・・。
さすがにセキュリティを下げると問題があるので、コマンドレベルから
やることは破棄せざるをえなくなりました。
その代替となると、passwdコマンドのソースを研究するしかないのかもしれませんね。どこかにそんなことを詳しくのっている場所はないでしょうか?
現在自分自身でも検索中です。

No. 1278 # hsj 2000/10/20 (金) 21:45:44
@68userさん
スミマセン、ぼくの確認方法が正しくなかったようです。
確実な方法で確認したところ、確かにnews.yahoo.co.jpは
LFしか返してきませんね。はー

>  http://x68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=1135
> の書き方はちょっとアレなので、書き直すと、
>  http://news.yahoo.co.jp/headlines/top/
> のヘッダ/ボディのセパレータは LF になってます。
こっちの意味は取り違えてなかったんですが(苦笑

@超初心者さん
いやそうではなくて、ユーザが任意の文字列を選ぶ際に、
その文字列のパスワードとしての強度を(ある程度)判定してくれる物を
取り除いてしまうこと自体が「改悪」だと言う意味です・・・。

No. 1279 # ケイ 2000/10/21 (土) 00:34:11
お礼が遅れてすいませんでした。
てっきり頼り過ぎたので無視されたと
思って掲示板を見てませんでした(^^;
なるほど、良く分かりました。
ありがとうございました

No. 1280 # 68user 2000/10/21 (土) 15:25:40
> 超初心者
> 超メール初心者
> 超ビギナー
こういうハンドルはやめてください。そこまで匿名性を
求めるならば、www.2ch.net などを利用してください。

> 今、procmailを用いて転送制限の設定を行っているのですが
> 添付ファイル付きのメールを転送しない設定ができません。
まずは ~/.procmailrc の先頭に LOGFILE=$HOME/procmail-log
などと書いて、ログを取りましょう。原因究明はその後です。

> passwdコマンドのソースを研究するしかないのかもしれませんね。
まぁそうなりますが、passwd は人間様が対話的に使うコマンド
なので、*BSD ならスクリプト向きの pw コマンドってのが
あります。これは root での使用を前提としているので、
指定したパスワードをそのまま設定してくれます。Redhat
Linux にも、その手のコマンドがあるかもしれません。

で、以下のようなスクリプト
    #!/usr/bin/suidperl
    $username=$ARGV[0];
    $newpasswd=<STDIN>;
    chomp($newpasswd);
    echo $newpasswd | pw usermod -n $username -h 0
を passwd_change という名前で保存して、
    # chmod 4755 passwd_change
    # chown root passwd_change
しておけば、誰でも
    % echo newpasswd | passwd_change username
で変更できます。

もちろんこのままでは、セキュリティもへったくれもないので
何かしらの制限を付けないといけません。

@has
文字コードの件、了解です。

No. 1281 # Madstar [E-mail] 2000/10/22 (日) 02:40:11
どうも皆さん始めまして。

私は最近Cygwinでプログラミングの勉強を始めました。
Linuxのことはまだほとんどわからないので2つ同時に
勉強しなければならないので大変です(^_^;)

で、インターネットで拾ってきたいろんなサンプルソースを
コンパイルして遊んでるんですが、LinuxとWin32での
ソースレベルでの互換性に疑問があります。

たとえば、あるサンプルソースの場合、シリアルポートにアクセス
するのに

#makefile
SERIALDEVICE = /dev/ttyS0

#tool.c
/* setup serial port */
void open_serial(char *devicename)
{
        struct termios newtio;

        dfd = open(devicename, O_RDWR | O_NOCTTY);
        if (dcfd < 0) {
    perror(devicename);
    exit(-1);
        }

        open_serial(SERIALDEVICE);

という具合にデバイスをオープンしているのですが、
このソースをWin32アプリとしてコンパイルしても当然(?)動きません。

で、SERIALDEVICEの部分を COM1 に変えて見たのですが、これも
動きませんでした。

他のファイルやソースを眺めてみても、良くわからないのですが、
この場合、Win32で動作させるにはどのようにすべきなのでしょうか?

No. 1282 # 雅人 2000/10/23 (月) 00:40:25
ども、はじめまして。雅人と言います。
質問なのですが
掲示板をつくろう(1)でperlを書くならEUCで書くべきと
書かれてたのでSJIS(CRLF)からEUC(CRLF)に変換したところ
逆に文字化けが起こってしまいました。
ローカルな環境(win95)でもアップロード先(virtualave.net)
でも文字化けが起こってしまいます。
これの原因とは一体なんなのでしょうか?
よろしくお願いします。

No. 1283 # 宗佑 [E-mail] 2000/10/23 (月) 11:16:10
超メール初心者あらため宗佑です。

procmailの転送設定、自己解決しました。
記述が足りなかっただけでした。
うーん、奥が深いですね、メール転送。
これからスクリプトを徐々に複雑にしていこうと思います。

でもprocmailを記述しているHPって少ないものなんですね。
載っている例も基本的なものです。
私も自分で試している途中ですが、procmailの達人みたいな例の
載っているHPをどなたかご存知内でしょうか?
お願いいたします

No. 1284 # 68user 2000/10/23 (月) 22:30:07
@雅人さん
> ローカルな環境(win95)でも
メモ帳などのエディタで化ける、ということならば
EUC を読めるエディタを入手して下さい。

> アップロード先(virtualave.net) でも
ブラウザの文字コード設定を「日本語 EUC」として直るならば、
CGI の出力する日本語部分が短かすぎるため、ブラウザが
文字コードを正しく解釈していないのでしょう。その場合は、
    print "Content-type: text/html\n\n";

    print "Content-type: text/html; charset=EUC-JP\n\n";
として下さい。

@宗佑さん
> でもprocmailを記述しているHPって少ないものなんですね。
> 載っている例も基本的なものです。
確かに少ないですね。僕もあまり見かけたことがありません。
ただ、基本的なところをわかっていれば procmailrc(5) と
procmailex(5) でなんとかなることも多いです。

@Madstar さん
うーん、さっぱりです。シリアルポートの操作さえしたことがないので…。

No. 1285 # 68user 2000/10/24 (火) 00:21:28
>  print "Content-type: text/html; charset=EUC-JP\n\n";
> として下さい。
というより、Content-type ヘッダには EUC-JP/Shift_JIS/ISO-2022-JP
などの charset を付加 *すべき* です。

僕のところの CGI プログラムには一部にしか付いていませんが、
これは悪い CGI の見本です。必ず charset を付けましょう。

No. 1286 # 雅人 2000/10/24 (火) 00:46:24
どうも、ありがとうございました!
無事できました。

No. 1287 # 海苔王 2000/10/24 (火) 16:51:10
みなさん、はじめまして。海苔王と申します。
現在、ソラリス7でサーバーを構築しています。
apache,sendmail,popper と動かしてきて、昨日までは
メールが動いていたのですが、突如、受信ができなくな
ってしまいました。電八で出たエラーは以下のとおりです。 +OK QPOP (version 3.0.2) a ******starting.
C: USER ***
S: +OK Password required for ******
C: PASS ********
S: -ERR [SYS/TEMP] maillock error 3: '/usr/mail/*****'

といった内容でした。sendmail.def からいろいろ見直したのですが、
うごきませんでした。どうかアドバイスお願いします。

No. 1288 # 68user 2000/10/24 (火) 23:44:09
チェック項目を思い付くままに。
    1. /var/log/messages や /var/log/maillog に詳細なエラーは出ていないか
    2. /usr/mail/ のパーミッションがおかしくなったのではないか (ls -ld /usr/mail)
    3. /usr/mail/ にロックファイルらしきものは残っていないか (ls -lA /usr/mail)
    4. ディスクの残り容量は (df -k)。i-node space が枯渇していないか (dk -ki)
    5. ソースから grep maillock して、エラー箇所を捜し出す
あと重要なのが、全ユーザでメールを取得できないのか、
一人だけメールを取得できないのかってこと。全ユーザなら
1,2,4 あたり。一人だけなら 3 をチェック。

ってな感じでしょうか。

No. 1289 # Madstar 2000/10/26 (木) 00:25:25
>うーん、さっぱりです。シリアルポートの操作さえしたことがないので…。

残念です(T_T)

まぁシリアルポートなんて今更余り使わないですよねぇ(^_^;)
いろいろ検索かけてるんですが、さっぱりです。

No. 1290 # mm 2000/10/26 (木) 00:51:17
>まぁシリアルポートなんて今更余り使わないですよねぇ(^_^;)
DOS時代には、awkで
print "AT" > "AUX"
みたいな感じでモデムとお話してましたが、
Windowsではどうなんだろう…試してません(^^;

No. 1291 # hsj 2000/10/26 (木) 01:22:13
> シリアルポート
ぼくの当てにならない記憶によると、
winでシリアルポートを開くときはAPIのCreateFile()を使うはずです。
その辺を調べてみてください。
で、この辺のソースはwin系と*nix系での互換性を維持するのは
難しいところだと思います。
ぼくはCygwinは使ったことありませんが、おそらくopen()を実装するのに
このAPIを使ってると思うので、もしかしたら開けるかもしれません。
が、結局フラグが違うでしょうからあまり意味無いと思います・・・。
#そもそもLinuxのopen()ってシステムコールですしね

No. 1292 # ありしあ 2000/10/26 (木) 16:37:09
初めまして。
Perlの勉強をし始めたばかりなのですけど、ソケットを使ったクライアントプログラムの作り方とか…全くの初心者な私にはすごく解りやすくて、それに読みやすかったです。

全部説明しよとう難しくなってるサイトや、簡単に説明しようと補足説明が抜けてるサイトも多いですけど、このサイトの説明はとても解りやすいです。
えっと感想をここに書いて良い物かどうか解りませんが、本当に参考になりました。ありがとうございます。

No. 1293 # NoiR 2000/10/26 (木) 21:48:01
少なくともNTであれば
C:\> type CON > COM1
といった方法でシリアルポートとお話できます。
parityやbaud rate、タイムアウト等の設定は、MSDOSと同じ
modeコマンドで行います。
Windows95/98のことは知りませんが、似たようなものだと思いますよ。

No. 1294 # 68user 2000/10/27 (金) 00:19:20
@ありしあさん
お褒めの言葉ありがとうございます。でもありがたくは思いますが、
もっとありがたいのは「ここは間違っている」「ここの記述が
理解しにくかった」などの指摘です。もちろん「こういうサンプル
プログラムがあるとよい」とか、単なるタイプミスのご報告でも
大歓迎です。

何かしら気づいた点がありましたら、よろしくお願いします。

と言っておきながら、これまでいくつかプログラムの不具合や
記述ミスのご指摘を頂きましたが、忙しくて web に反映できず、
誠に申し訳なく思っています。手元にあるファイルは修正して
いますので、暇ができ次第更新するつもりです。

# なのに、また忙しくなってきてしまった…。

No. 1295 # 宗佑 [E-mail] 2000/10/27 (金) 09:51:22
procmailについてあるツールformailについての
質問です。

formailを使用して自動返信設定を作成中なのですが
from句を任意で指定したアドレスに変更して、返信したいのです。

今の状態を見るとユーザー名+サーバーのドメイン名といった具合になってしまいます。
これを"xxx@xxx.yyy.zzz"といった指定したメールアドレスをfrom句に入れて自動返信したいのです。そういった方法はあるのでしょうか?
よろしくお願いいたします

No. 1296 # 宗佑 [E-mail] 2000/10/27 (金) 16:59:39
追記です。

現在、procmailの設定は

:0 h c
* !^FROM_DAEMON
* !^X-Loop:your@own.mail.address
| (formail -r -A"Precedence: junk" \
-A"X-Loop: your@own.mail.address" ; \
cat resmsg) | $SENDMAIL -t

これだと、送信者名がUNIXのユーザー名になってしまう。
最後の$SENDMAILで送信しているから当然なのですが・・・
ので、この送信者をxxx@xxx.yyy.zzzとしたいのです。
なにとぞ、よろしくお願いします。

追伸
どなたか、linuxサーバー(Redhat 6.2)で使用可能なお勧めの
自動返信ツールをご存知でしたら教えてください。

smtpにはsendmail8.9.3を使用しています。

No. 1297 # やまま 2000/10/27 (金) 17:08:48
むにむに。。思ったこと。

link-check.pl

114-115行目。
        &check_link(SITES=>[@sites],
     MAX_CHILDRED=>20);

138-143
        if ( defined $args{SITES} ){
    @sites = @{$args{SITES}};
        }
        if ( defined $args{MAX_CHILDREN} ){
    $max_children = $args{MAX_CHILDREN};
        }

MAX_CHILDRED -> ?

No. 1298 # 海苔王 2000/10/27 (金) 18:52:20
>68user 様
アドバイスありがとうございました。
どうやら容量の枯渇が原因でした。
余計なものを移動したら、動くようになりました。
ありがとうございました。

No. 1299 # ありさわ [E-mail] 2000/10/27 (金) 19:41:12
Perlのネットワークプログラムで、サーバーとの接続が
切れた状態を検出したいのですが、LANケーブルがつながった状態で
通信できなくなった状態は検出してPerlプログラムを終了出来るのですが
LANケーブルを引きぬくことによって、通信できなくなった状態はどのようにして検出したらよいのですか?

一応、Perlの中でPingをうって帰ってきた値を見て検出しようと
したのですが、Perlの中のPingはRoot権限でないとエラーに
なってしまいます。
Root権限以外でPingを実行する方法か、あるいは違う方法を
知っていたら教えて下さい。お願いします(v_v)

No. 1300 # 68user 2000/10/28 (土) 04:43:23
@宗佑さん
> "xxx@xxx.yyy.zzz"といった指定したメールアドレスを
> from句に入れて自動返信したいのです。
これは、単に From ヘッダが xxx@xxx.yyy.zzz になっていれば
いいのですか? それとも envelope from が xxx@xxx.yyy.zzz と
なっていて、例えば転送途中でメール送信に失敗した場合、
エラーメールが xxx@xxx.yyy.zzz に送られることを意図して
いますか?

前者ならただ単に From: を置換するだけなので、formail -i や
formail -I でできそうです。後者なら sendmail -f xxx@xxx.yyy.zzz
でしょうか。

なお、僕は formail を使ったことはありませんし、できるか
どうか試してもいません。


@やままさん
> MAX_CHILDRED -> ?
む、typo ですね。直しました。御指摘ありがとうございました。


@ありさわさん
ケーブルを抜いた状況だとどうなるんですかね。多分僕なら一定時間で
タイムアウトさせて unreachable かどうかを判断すると思いますが、
本当はどうすべきなのかは わかりません。

それはそれとして、以下は ping で判断するという前提の話。
ping は ICMP プロトコルを使いますが、これは root 権限が
ないと実行できません。その証拠に ping コマンドは root に
suid されています。
    % ls -l /sbin/ping
    -r-sr-xr-x 1 root wheel 195956 Jul 27 23:31 /sbin/ping*
というわけで、素直 (?) にping コマンドを使うのがいいのでは
ないでしょうか。

No. 1301 # rosegarden 2000/10/30 (月) 01:00:45
>ケーブルを抜いた状況だとどうなるんですかね。多分僕なら一定時間で
>タイムアウトさせて unreachable かどうかを判断すると思いますが、
>本当はどうすべきなのかは わかりません。

OS 依存ですが、ifconfig -a とすると表示されることがあります。
下は FreeBSD の場合です。

dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
                inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
                inet6 fe80::xxx:xxxx:xxxx:xxxx%dc0 prefixlen 64 scopeid 0x1
                ether xx:xx:xx:xx:xx:xx
                media: autoselect (none) status: no carrier
                supported media: autoselect 10baseT/UTP <full-duplex> 10baseT/UTP none

no carrier というのがケーブルが抜けたことを意味していると思っても
だいたいあたっているはずです。一方、Solaris のように抜けた瞬間に
/var/adm/messages などに記録されるものもあります。

Solaris がでたついでなので、

>1. /var/log/messages や /var/log/maillog に詳細なエラーは出ていないか

Solaris の場合 sendmail のログは通例 /var/log/syslog に記録され、
BSD の /var/log/messages にあたるものは /var/adm/messages です。

No. 1302 # ありさわ [E-mail] 2000/10/30 (月) 11:48:01
No.1299の ありさわ です。
いろいろご回答いただきありがとうございます。
掲示板に書き込みしたのが初めてだったので、
返答が有ったことにチョット感激してます。

この件については結果的に、僕の技術不足で違う方法によって
対処をすることになりましたが、今後のためにこの件について
前の書き込みで説明が足りなかった分の説明をさせていただきます。

切断を検出して子プロセスをKillする一連の作業は
コマンドラインからではなくPerlプログラム内で行いたいです。
ついでに何を作成したかというと、ここのサンプルプログラムを
利用してネットワーク対戦のロビーサーバーを作成しました。

Q.LANケーブルを抜いたらどうなるのか?
まずこれは、クライアント側のLANケーブルを抜いた時のことです。

※LANケーブルを抜いた時の様子
・最初にケーブルがつながった状態でサーバーに接続をしにいきます。
・サーバーはこのクライアントに対して子プロセスを作成します。
・接続が確立した状態でクライアントのケーブルを引きます。
・子プロセスはクライアントとの接続が切れたことを認識できず
    残ったままになります。
・この作業(嫌がらせ)を何度もされると子プロセスが溜まっていって
    結果、サーバーがダウンするんじゃないか?って思ってます。

あたたかいご回答、本当にありがとうございました。

No. 1303 # 宗佑 [E-mail] 2000/10/31 (火) 18:34:11
ありがとうございます。

formailによる自動返信完了しました。
errorメールに関しても、本文に細工をしてなんとか解決しています。
こういうことが、やりたかったのも、UNIXのアカウント名とメールアカウント名が、まったく一致しない仕様のシステムを使っているので、外部に対する送信者が誰であるかを混乱させないようにする目的があったからです。
ありがとうございました

No. 1304 # Taka@万年初心者 2000/11/02 (木) 21:22:20
はじめまして。
GOOで検索してきました。
perlの事について質問があるのですが。。。。

perlを使ってActiveXのDLLファイルを舐めようと思っているのですが、全くもって方法が解りません。
ここの過去ログや、その他色々探して見ましたがそれらしいものは見当たりませんでした。

どうぞお解りになる方がいらっしゃいましたら御指導宜しくお願いします。

No. 1305 # 68user 2000/11/03 (金) 05:33:47
@rosegarden さん
> OS 依存ですが、ifconfig -a とすると表示されることがあります。
なるほど、勉強になりました。どうもです。

@ありさわさん
> 子プロセスはクライアントとの接続が切れたことを認識できず
> 残ったままになります。
という用途なら、TCP のタイムアウトを待つか、自前で
タイムアウトの機構を作るのが普通のような気がします。

@Taka さん
> perlを使ってActiveXのDLLファイルを舐めようと思っているのですが
「ActiveX の DLL を舐める」の意味からして さっぱりわかりません。
google で検索すると
    http://www.union-net.or.jp/~cgifaq/Archive/msg13177.html
        Subject: [cgi:13180] Re: Perl からActiveX のDLL を呼び出すには
というのが引っかかりますが、現在サーバの容量オーバーにより公開を
中止しているようで。あと perl モジュールの Win32::COM ってのが
ありますが、関係あるのかなぁ…。
    http://www2s.biglobe.ne.jp/~cru/library/zddbbs/cgi-bin/wwwboard.cgi
に行くと、その道の偉い人が教えてくれるかもしれません。

No. 1306 # 上條 誠 [E-mail] 2000/11/03 (金) 13:06:29
初めまして。
上條と申します。

かなり困っております。
どなたかお知恵を拝借願います。
現在Windows98にFTPサーバソフトをインストールしてあり、カスタマイズチューンナップされた
シェルのないFreeBSDにファイルをダウンロードさせたいのです。
FreeBSD側のコントロールはTelnetでコマンドを入力することにより、FreeBSD側は指定された
IPのFTPサーバに(この場合Windows98)接続をしてダウンロードを開始する仕組みなっています。
この際のFTPサーバへの21番にどういったコマンドが流れているのか不明ですが、様々なFTPサーバソフトを
試した結果、NDMTというコマンドがFTPサーバソフト側で処理できないこと、winftpdeamonの
コミュニケーションタイムがオーバーになるというエラーが出て、FTPサーバ側で切断をしてしまいます。
一度、Win98+wftpdでの成功例を聞いたことがありますが、色々設定を変えてみましたが、うまくいきません。

接続の形態としてはルータ支点に同ノード内の10BASE-T接続です。
Freebsd側とは全てのPORTで接続は出来ます。
プロトコルはTCP/IPを使用しています。

もっとも最初からLinuxやFreeBSDにFTPサーバをたてることが出きれば問題なく接続できることは
マニュアルに明記してあるのですが、私がFTPをたてるだけの技術がないことと、本日中という時間の中で
手元に使用できるLINUXなどがなく、大変困っております。
詳しい説明でなくても結構ですので、何か妙案がございましたら、どなたかお教えいただけないでしょうか。

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

No. 1307 # rosegarden 2000/11/03 (金) 15:33:00
AnHTTPD で HTTP 使ってダウンロードするのは?
FreeBSD の方は標準コマンドの /usr/sbin/fetch で落せますよ。

FreeBSD の 4.0-RELEASE 以降だと ftp クライアントの類は
passive mode で動作しますが、これはチェックしました?
passive mode をオフにするには /etc/login.conf
の default エントリで FTP_PASSIVE_MODE という環境変数を
セットしているから、そのファイルを書き換えて、NO にすれば
良いですよ。

思い付くのはこれだけですね。カスタマイズされているのだから、
これ以上答えようがないですね。

No. 1308 # rosegarden 2000/11/03 (金) 15:38:03
> FreeBSD の方は標準コマンドの /usr/sbin/fetch で落せますよ。

失礼、/usr/bin/fetch ですね。

それから wget でも良いかも知れません。
もっとも、FreeBSD がわで IPv6 の設定(デフォルト)してあると最近の
wget は IPv4 のオプションつけないと no route to host って
エラーを出すこともありますが。

No. 1309 # rosegarden 2000/11/03 (金) 15:39:32
> FreeBSD の方は標準コマンドの /usr/sbin/fetch で落せますよ。

失礼、/usr/bin/fetch ですね。

No. 1310 # いえろーばっくす [E-mail] 2000/11/03 (金) 17:02:09
はじめまして。
時々68userさんのページ拝見させていただいてます。
いろんなことが書いてあってとてもためになります。

場違いかもしれないんですがXについて少々よろしいでしょうか?
このページでHello World のソースをとってきて、
gcc -o test test_hello_world.c -I /usr/X11R6/include
  -L /usr/X11R6/lib -lX11 -lm
とコンパイルしたところ、正常に動作したのですが、
右上のバツボタン押してもちゃんと終了してくれず、
X connection to :0.0 broken (explicit kill or server shutdown).
と、怒られてしまいます。
ちなみにVine Linux2.0CRを使用しております。
あと、右上のバツボタンがそのHello Worldのみに関しておかしい
表示になってしまいます。
と、いうか自分で書いてみたやつは全部なんですが。
もし心あたりがあったらご教授いただけませんでしょうか?
お願いします。
でわまた寄らせていただきます。

No. 1311 # 68user 2000/11/04 (土) 00:10:57
@いえろーばっくすさん
> X connection to :0.0 broken (explicit kill or server shutdown).
これはクライアント側の Xlib が出力しているメッセージです。

# 個人的には、あまり気にするほどのメッセージではないと
# 思っています。

よくわかってませんが、多分ウィンドウマネージャの「×」を
押すと、X サーバとのコネクションが切断されるのでしょう。
X クライアントは、コネクションが切断されたので X サーバと
通信できなくなり、エラーとなって終了しているわけです

つまり、「×」ボタンを押すと X クライアントのプロセスが直接
kill されるわけではないということです。

これを直したいなら、まず
    Atom a1,a2;
アトムを宣言します。次に
    a1 = XInternAtom(display, "WM_PROTOCOLS", False);
    a2 = XInternAtom(display, "WM_DELETE_WINDOW", False);
    XSetWMProtocols(display, window, &a2,1);
とすれば、「×」ボタンを押すと、ClientMessage イベントが
送られてきます。後は switch 文の中で
    case ClientMessage:
        if ( event.xclient.message_type == a1 && event.xclient.data.l[0] == a2 ){
            XCloseDisplay(display);
            exit(0);
        }
        break;
とすればいいでしょう。

「×」を押しても終了しないアプリや、終了する前に後始末を
するアプリを作るときは、こういうふうにします。


@rosegarden さん
> FreeBSD の方は標準コマンドの /usr/sbin/fetch で落せますよ。
FreeBSD なら ftp コマンドでも落とせますね。
    % ftp http ://foo.bar.com/hoge.html
    % ftp ftp ://foo.bar.com/hoge.tgz
などなど。Solaris にもこういうコマンドがあればいいのに。

@上條さん
> 私がFTPをたてるだけの技術がないことと
シェルがないということなので今回は無理かもしれませんが、
ftp サーバを立てるだけなら、/etc/inetd.conf に
    ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l
と書いて、kill -HUP `cat /var/run/inetd.pid` でおしまいです。
# FreeBSD のデフォルトでは、ftpd は使用可能です。

anonymous ftp サーバなら、さらに (FreeBSD なら) jman ftpd に
書いてあるとおりにやればよいです。


「ネットワークプログラミングの基礎知識」に「HTTP の並行アクセス」
    http://X68000.startshop.co.jp/~68user/net/http-parallel-1.html
というページを置きました。お暇な方、ご笑覧くださいませ。

No. 1312 # mm 2000/11/04 (土) 02:01:53
perl CGIの実行権限について質問させて下さい。
CGI内部でこれを調べる方法を探してて、
ここの掲示板のソースを参考にさせてもらおうと思ったのですが、
ここでは、(getpwuid($>))[0]で、実行権限が誰かを表示してますよね。
これを -o $script_name の検査で、
直接、所有者権限か(真の場合)、それとも他の権限か(偽の場合)を
検査することはできないのでしょうか?


@ActiveX の DLL を舐める
ウチのURLが出てるなぁ…でも、私宛じゃない(笑い)

これ、単にDLLの内部データを読み出したいだけじゃないんでしょうか?
(そういう、ツールがあったと思う)
それなら、perlで注意するのは、binmodeを使うことくらいでしょう。
後は、DLLのバイナリ構造をどこかで調べればいい(私は知らないですが)。

No. 1313 # 68user 2000/11/04 (土) 02:58:09
おそらく -o $filename は
    $> == stat($filename)->uid ? 1 : 0
と同じだと思うので、それで問題ないと思います。

getpwuid を使ったのは特に意味はないので (強いて言えば
-o の存在を知らなかったから)、今後は
    if ( -o $0 ){ 所有者権限 }
で判別しようかと思います。

No. 1314 # mm 2000/11/04 (土) 12:23:02
>と同じだと思うので、それで問題ないと思います。
UIDとかは自信がないので、ありがとうございました。
ウチもそれで行きます♪

No. 1315 # rosegarden 2000/11/04 (土) 14:42:47
> FreeBSD なら ftp コマンドでも落とせますね。
これは知りませんでした。勉強になりました。
> などなど。Solaris にもこういうコマンドがあればいいのに。
Solaris は /usr/local/bin に GNU コマンドとか BSD コマンドとか
インストールしないと日常的な作業は確かに辛いですね。

No. 1316 # たかぽん 2000/11/06 (月) 15:08:26
UNIXの/var/adm/crashディレクトリについての質問です。
最近仕事でHP−UNIXを使用しているのですが、/var/adm/crash
ディレクトリに、「core〜」、「bounds」のディレクトリが作成されて
しまい、/var の領域が100%になってしまいます。
「core〜」については、削除しても良いと本に載っていたのですが、
「bounds」については、削除してよいか分からないです。
どなたかご存知の方いらっしゃいましたら、お教えください!
よろしくお願いします!

No. 1317 # 68user 2000/11/06 (月) 15:47:58
HP-UX は知りませんが、マニュアル savecore(1M) には
> savecore saves the core image in the file
> dirname/hp-core.n and a copy of dumpsystem, which contains the
> namelist, in the file dirname/hp-ux.n. The trailing n in the path
> names is a number that increases by one every time savecore is run in
> that directory. This number is kept in the file dirname/bounds, which
> is created if it does not already exist.
とあるので、消してもいいんでないでしょうか。

No. 1318 # みーたん 2000/11/06 (月) 16:04:29
「SSLプログラミング」に関する質問です。

サーバー・クライアント間でSSL通信を行っている状態のものに、
「プロキシプログラム」なるものを両者の中間に介在させた場合
について・・。

サーバー・クライアントの「メッセージのやりとり」をログファイル等に
出力したいのですが、当然この両者は「暗号」によるデータのやりとりを
している為に「メッセージ」に関しては???と言った状態です

この暗号を「解読」と言った事は出来ないものでしょうか?

No. 1319 # いえろーばっくす [E-mail] 2000/11/06 (月) 16:04:44
どうも。いえろーばっくすです。
68user様、windowの件ありがとうございました。
今やってみたところちゃんと閉じることができました。
ボタンの表示もちゃんと直りました。
これからもいろいろと質問することがあるかもしれませんが、
どうぞよろしくお願いします。

No. 1320 # M.K 2000/11/06 (月) 19:25:00
はじめまして。

日付,時間,なまえ,・・・
日付,時間,なまえ,・・・
日付,時間,なまえ,・・・

といったようなログから当日分のみを抜き出し他のファイルに保存する。
といったようなバッチを作りたいのですが、
UNIX初心者でさっぱりわかりません。どなたか教えていただけませんか?

No. 1321 # 68user 2000/11/06 (月) 21:22:52
@みーたんさん
盗聴できるかということならば、無理です。なぜなら SSL は
公開鍵と秘密鍵を使うから。盗聴によって公開鍵を盗めても、
秘密鍵はクライアント・サーバそれぞれが保持していますので、
データは守られます。
# という説明でわかってもらえるかしら。

@M.K さん
sh スクリプトで書きたいとか、perl を使いたいくらいは
書きましょうよ。こちらがサンプルを書いても、「いえ、
そうじゃなくて…」という返事はもらいたくないので。

まぁ 一言でいうと、date コマンドで現在日時を取得し、それを
キーとして grep です。date と grep のマニュアルを読みましょう。

No. 1322 # HAMA 2000/11/07 (火) 01:08:55
はじめまして。

当方cshシェル環境にてUNIXを利用しております。
その環境設定で「カレントディレクトリをプロンプトに追加」というのがありますが、
ディレクトリの移動によって「今現在どこに居るか」というのを表示させたいのです。

set prompt = "`whoami`@`hostname -s`[\!][`pwd`]%"

のように `pwd` をつけてもsourceコマンドによって.cshrcを再有効に
した時点でのカレントディレクトリが格納されたまま変化してくれません。

ディレクトリの移動に応じてプロンプト上に表示されるカレントディレクトリを
逐次変化させるためにはどの様に.cshrcを書き換えれば良いのでしょうか?
`pwd`の部分を$cwdとかに変えてもダメだったし...ほとほと困っております。

参考までに、現在の.cshrcの内容を書いておきます。

alias dir 'ls -alF'
alias less 'jless'

setenv LANG japanese
setenv EDITOR vi
setenv PAGER less
setenv BLOCKSIZE K
setenv EXINIT 'set showmode'
setenv LESSCHARSET japanese

set prompt = "`whoami`@`hostname -s`[\!]%"

なお、FreeBSD3.4R上での環境です。
どうかよろしくお願いします。

No. 1323 # つかさ 2000/11/07 (火) 05:27:26
C言語を覚えたいのですが
どなたかC言語を教えに来ていただけませんでしょうか。
兵庫県姫路市
ho-muzu@mui.biglobe.ne.jp
メールください。

No. 1324 # rosegarden 2000/11/07 (火) 07:43:30
> ディレクトリの移動によって「今現在どこに居るか」というのを表示させたいのです。

とりあえず、こんなんでどうでしょうか? テストは tcsh でやったので、
断定的なことは言えませんが、古い csh と互換性のある構文を使っています。

alias sp 'set prompt=`whoami`@`hostname -s`\[`pwd`\] '
alias cd "cd \!* ; dirs -l ; sp"
alias pushd "pushd \!* ; sp"
alias popd "popd ; sp"

ポイントは set prompt の alias をシングルクォートで囲むところですかね。
あと、cd, pushd, popd のごとに prompt の set をするということですね。
4.1-RELEASE 以降だと /bin/csh は tcsh なので、もっと簡単に出来ます。
たしか %/ とかいうのを使えば、良いだけだったと思います。

No. 1325 # HAMA 2000/11/07 (火) 09:18:00
rosegardenさんへ>

>ポイントは set prompt の alias をシングルクォートで囲むところですかね。
>あと、cd, pushd, popd のごとに prompt の set をするということですね。

なるほど。cdコマンドを使うたびにset promptするんですね。
ためしてみたところ、確かに出来ました。

>たしか %/ とかいうのを使えば、良いだけだったと思います。

これは知りませんでした。tcshの利用が可能なマシンがあるので
試してみましたが、ホントですね。うーん、こっちの方が簡単だなぁ。

でもメインのマシンはシェルの変更を許可してくれないので、
alias方式で行きます。どうもありがとうございました。

No. 1326 # 68user 2000/11/07 (火) 10:15:40
> でもメインのマシンはシェルの変更を許可してくれないので
僕は sh・csh のような非人間的なシェルを使うのは耐えられない
ので、そういうときは勝手に tcsh を入れて、~/.cshrc に
    if ( ${?tcsh} == 0 ) then
        exec /usr/local/bin/tcsh
    endif
などと書いてます。

前にちょっとはまったことを書いておきますと、これをするなら
~/.cshrc に setenv TERM vt100 などと書いてはいけません。
普通にログインするときはいいのですが、もし端末がない場合
(rsh を使う場合など) は、tcsh が端末があると勘違いして
入力待ちになってしまい、rsh が効かなくなるからです。

Solaris などで、デフォルトだと TERM=kterm になってしまい、
さらに /etc/termcap に kterm のエントリがないため、vi や
emacs を実行すると文句を言われるので仕方なく setenv TERM vt100
と書いている人もいると思いますが、それをするなら
    if ( ${?TERM} ) then
        setenv TERM vt100
    endif
と書けばいいです。これなら rsh のときは TERM が設定されません。

No. 1327 # FTPについて調べている者 2000/11/07 (火) 13:01:58
はじめまして。今UNIXにおいてのプロセス間通信として、
FTPをモデルとして調べていて、ここのHPにたどりつきました。
ものすごく参考になってます。で、聞きたいことがあります。
聞きたいことは、FTPクライアントのプログラムでのことですが、
C言語版での、GET及びPUTなのですが、GETの場合は、Perl同様に
soketより手に入れたデータをfopen関数を用いてのそのデータをGetしたファイルと同じ名前で保存することでGETされるのですか?PUTも同様ですか?
また、FTPサーバーでは、LESTやGETやPUT
のプログラム上では、どのような動きをしてるのでしょうか?
自分なりには、イメージがあるのですが自信がないので教えてもらい
たいです。
こちらの勝手なお願いですが、今週中までに返事を掲示板のほうでいただけると大変助かります。

No. 1328 # たん 2000/11/07 (火) 14:41:10
初歩的な質問ですが,
AIXを触り始めたのですが,
telnetでrootのログオンを許容しているのを
やめたいのですが,
設定ファイルがわかりません。
どのファイルにその設定が書いてあるのでしょうか?

あと,tcshをmakeするとEUCコードで作成されてしまいますが
AIX用(SJIS)での作成方法もご存知の方,お教え願います。

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

No. 1329 # 68user 2000/11/07 (火) 15:55:40
> telnetでrootのログオンを許容しているのをやめたいのですが,
AIX は管理したことも使ったこともありませんのでわかりません。
init, pam, login, tty, ttys などのマニュアルを探してみてください。
    FreeBSD なら /etc/ttys
    Solaris なら /etc/default/login
    Linux なら /etc/security
あたりなので、/etc の下に片っ端から grep かけてみる
のもいいでしょう。
    cd /etc; egrep -i 'secur|root|login' * */* */*/*


> soketより手に入れたデータをfopen関数を用いてのその
> データをGetしたファイルと同じ名前で保存する
そうです。C でも perl でもやることは同じです。

> FTPサーバーでは、LESTやGETやPUT
> のプログラム上では、どのような動きをしてるのでしょうか?
コマンド用コネクションから RETR hoge が送られてきたら、
データコネクションを確立し、hoge のファイルを fopen して
データコネクションに hoge の内容を流します。

コマンド用コネクションから LIST/NLST が送られてきたら、
データコネクションを確立し、/bin/ls の結果 (別に ls を
使わなくてもいいけど) をデータコネクションに流します。

> 自分なりには、イメージがあるのですが自信がないので
> 教えてもらいたいです。
自分なりのイメージを書いた上で、それが合ってるか間違ってるか
たずねるのがスジというものでしょう。

No. 1330 # かりり 2000/11/08 (水) 04:44:11
質問というか、ご意見頂きたいです。
掲示板が荒らされたなら、制限したり削除できますが
メールが大量に届いたり本文が最悪なタグの羅列だった場合
どうすればいいんでしょうか?明日も変なメールきそうで
カナリ、不安です。これって警察に言えたりするものなのでしょうか?
迷惑防止条例とか。

http://www.alles.or.jp/~tll/toc/hino.html

No. 1331 # ppa 2000/11/08 (水) 11:56:14
Perlの質問です。

2000/10/01の三日まえを表示したいのですが
どのようにやれば良いでしょうか?

宜しくお願いします。

No. 1332 # 68user 2000/11/08 (水) 13:28:05
> 2000/10/01の三日まえを表示したいのですが
Time::Local で time_t 形式に変換し、3日分の秒数を引いてから、
再度 localtime で年月日の形式に戻します。
    use Time::Local;
    $time = timelocal(0,0,12,1,10-1,2000-1900);
    $time -= 60*60*24*3;
    ($sec,$min,$hour,$day,$mon,$year) = localtime($time);
    printf "%4d/%02d/%02d",$year+1900,$mon+1;


> メールが大量に届いたり
メールが何通届いていて、それぞれサイズはどれだけか、という
ことは、メール本文を取得する前に調べることができます。
また、これはメールサーバにもよりますが、あるメールの先頭
何行のみを取得、ということもできます。そういう機能を持つ
メーラーを探してみてはどうでしょうか。
    % telnet メールサーバ名 110
    USER your_user_name
    PASS your_password
    LIST (メール一覧とサイズ表示)
    TOP 1 3 (1通目のヘッダと本文3行のみを表示)
    QUIT (終了)

> 本文が最悪なタグの羅列だった場合
Windows はよく知らないんですが、HTML メールが送られて
きたら、HTML として開くか plain text として開くかを
確認してきませんか? 聞いてこないなら、まともなメーラーに
かえましょう。

No. 1333 # M.K 2000/11/08 (水) 14:13:23
68userさん > こないだは説明が足りずに済みません。助かりました。
またしても質問なんですが、
sh スクリプトで2つのファイルの内容が完全に一致した場合に
aというファイルに 日付,"一致"(文字列)を出力して、
一致しなかった場合には 日付,"不一致"(文字列)を出力したいんですが
全然わかりません。よろしかったら教えてください。

No. 1334 # 68user 2000/11/08 (水) 15:21:31
ファイルの比較には cmp か diff を使います。一致
したかどうかはコマンドの戻り値を見ればよいですが、
sh なら $? で参照できます。あとはマニュアルを
よく読んでみてください。

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