|
>>2414 ぶちお > 今学校でパソコン同士のデータのやり取りを、Cプログラムで > なんとかやろうとしているのですがわからんのですー! さて困ったものですね。あまりにもひどい質問の仕方です。 http://x68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?howtouse は読んでいただけましたか? パソコンって何ですか? UNIX ですか? Windows ですか? それ以外ですか? 具体的な OS 名とそのバージョンは? データのやり取りって具体的に何をしようとしていますか? フロッピーからデータを読み込むことですか? LAN 経由で ファイルを読むことですか? RS-232C 経由でデータを やりとりすることですか? 今後、こういう調子の質問を続けるつもりでしたら、僕は お相手を致しかねますのでよろしく。 |
|
ふくしさん、お返事ありがとうございます。 PPM.pmの1586行目付近は、下のようになっていました。 1577:unless ($PPDfile && $$PPDfile) { 1578: foreach (keys %repositories) { 1579: my $location = $repositories{$_}{'LOCATION'}; 1580: if ($location =~ /[^\/]$/) { $location .= "/"; } 1581: $$PPDfile = $location . $package . ".ppd"; 1582: return %PPD if (%PPD = getPPDfile('package' => $$PPDfile, 1583: 'parsertype' => $parsertype, 'PPDfile' => \$$PPDfile)); 1584: undef $$PPDfile; 1585: } 1586: return unless $$PPDfile; 1587:} ちょっと違うみたいですよね。こちらの方が行が短いのでしょうか。 ちなみにDOS窓に入力したのは、 C:\>ppm これだけです。 PPM のシェルでパッケージのinstallをしようと思っているのですが、 とりあえずPPMを起動するため、入力しているのはppmという文字だけ です。そして、ppmとだけ入力すると、例のエラーが出るのです。 少ない情報ですが、何か分かりますでしょうか? やはりActivePerlを入れ直してみた方が良いのでしょうか? よろしくお願いします。 |
|
>>2416 ぶぶ 先ほど、Windows2000 に ActivePerl を入れる必要が あったので試してみたのですが、ppm とだけ 打つと PPM interactive shell ... と出てエラーは出ませんでした。 インストールしたのは最新の build 631 (perl-5.6.1) です。 再インストールは悪くない選択肢ではないかと思います。 |
|
>>2416 ぶぶ さん: いま会社で ActivePerl の環境がないのでテストできませんが、 >return unless $$PPDfile; ここで >>Can't use an undefined value as a SCALAR reference (スカラーの参照として、未定義値は使えません) ですよね。 $$PPDFile というのは、 $PPDFile というスカラー変数に スカラーへの参照(別のモノを指し示すもの)が入っていると考えて、 そのスカラーの値を返そうとしているわけですが、 そのとき $$PPDFile に undef が入っているのでくだんのエラーが 出ています。 たぶん $PPDFile という変数にもっと上の方でスカラーへの参照を セットすることを期待して動いていたのですが、 その期待が裏切られているようです。 (その上でいろいろしているのも、$$PPDFiles つまり $PPDFiles が指し示すスカラーメモリに対してで、 $PPDFiles にどのような論理で何が入っているかは 下のコードからは不明です) ・・・という風にさかのぼって研究しても勉強になると思いますが、 (意外ともうちょっとでパキッとわかったりして) いずれにせよこんなアンフレンドリーなメッセージが出て中断するのは 作者の意図と違う動作なので、再インストールでもいいと思います。 |
|
ふくしさん、68userさん、お返事ありがとうございます。 build631をインストールしてみましたら、何の問題もなくPPMの シェルが起動しました。 インストールしてから、PPM.pmを覗いてみると、1586付近は、 ふくしさんが書かれたものと同じになっていました。 前に入れていたものがおかしかったのでしょうか。入っている pmファイルがおかしいとは夢にも思わなかったので再インスト ールを試さずに質問してしまってごめんなさい。 これでやっとパッケージのinstallができます。ありがとうご ざいました。 PS. ふくしさん、エラーに関する説明ありがとうございます。 エラーの出る仕組みがよく分かりました。 |
|
ボーランドC++コンパイラーでC言語のCGIを作ろうと思っているのですがどうしたら良いのでしょうか? bcc32 -o CGI名 ソース名 でいけるのでしょうか? よろしくお願いします |
|
>>2420 初心者 > …でいけるのでしょうか? 試してみた結果どうなりましたか? |
|
メール受信時に"newaliases"コマンドを実行したいのですが、上手くいきません。 方法としては、特定のアドレスにメールが届いた時点でシェルスクリプトを実行するようエイリアスファイルにて設定しており、シェルスクリプトにはsudoで"newaliases"を実行するよう書いています。 また、sudoersにて"newaliases"コマンドをroot権限で実行できるようにも 設定しています。 "newaliases"コマンドではなく、他のコピーコマンド(cp)などは動作するのですが、"newaliases"コマンドは動作しません。 同じような方法を取られている方がいらっしゃいましたら 設定方法を教えていただけませんでしょうか。 宜しくお願いいたします。 |
|
申し訳ありません。環境を全く書いていませんでした。 RedHat Linux7.1.J、Sendmail8.11.5 です。 宜しくお願いします。 本文↓ メール受信時に"newaliases"コマンドを実行したいのですが、上手くいきません。 方法としては、特定のアドレスにメールが届いた時点でシェルスクリプトを実行するようエイリアスファイルにて設定しており、シェルスクリプトにはsudoで"newaliases"を実行するよう書いています。 また、sudoersにて"newaliases"コマンドをroot権限で実行できるようにも 設定しています。 "newaliases"コマンドではなく、他のコピーコマンド(cp)などは動作するのですが、"newaliases"コマンドは動作しません。 |
|
>>2423 橋本 どのユーザが「newaliases を root 権限で実行できる」ような 設定になっていますか? また、sudo のログには何と記録されていますか? |
|
>>2424 68user だけでは情報が不十分かな…。 sudoers に書いた内容と、「特定のメールアドレスにメールが 届いたらコマンドを実行する」というのをどうやって実現して いるか (/etc/aliases とか /home/foo/.forward とか) も 書いてください。 |
|
>>2424 68user newaliasesをroot権限で実行できるユーザは"deamon"に設定しています。 理由は、メール受信時に実行されるシェルスクリプトが一体どのユーザで 実行されるか分からなかったため、シェルスクリプト内にメールを送信 するコマンドも記述したところ、"deamon"という送信者名でメールを送信 したため、deamonでシェルスクリプトは実行されると思い設定しました。 ですが、実際はdeamonが実行しているようではないようです。 >>2423 にてcpコマンドなど他のコマンドは動作する。 と記述しましたが、私の勘違いで動作していませんでした。 申し訳ありません。 また全てのユーザに"newaliases"、"cp"コマンドをroot権限で 実行できるよう設定したところ、正常に動作しました。 ですが、全てのユーザに許可してしまうわけにはいかないので、 どうにかして特定のユーザにのみ許可して動作するようにしたいのですが ・・・。 以下設定ログ・設定内容です。 ●メール受信時のログ↓ Jan 21 18:20:16 test sudo(pam_unix)[19079]: authentication failure; logname= uid=0 euid=0 tty= ruse r= rhost= user=daemon Jan 21 18:20:23 test sudo(pam_unix)[19079]: 2 more authentication failures; logname= uid=0 euid=0 t ty= ruser= rhost= user=daemon Jan 21 18:20:23 test sudo[19079]: daemon : 3 incorrect password attempts ; TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/bin/newaliases ●sudoersに追加↓ deamon ALL= NOPASSWD: /usr/bin/newaliases deamon ALL= NOPASSWD: /bin/cp ●メール受信時に動作するシェルスクリプト↓ #!/bin/sh sudo cp /etc/mail/123.txt /etc/mail/456.txt sudo newaliases mail -s test mailuser@****.co.jp < /etc/mail/456.txt exit 長文で申し訳ありませんが宜しくお願いします。 |
|
>>2425 68user 「特定のメールアドレスにメールが届いたらコマンドを実行する」は、 (/etc/mail/aliases)に mailuser :"|/etc/mail/mail-program" と記述しています。 よろしくお願いします。 |
|
>>2427 橋本 > ●メール受信時に動作するシェルスクリプト で /usr/bin/id > /tmp/id.result などとすれば、どの権限で 動いているのかがわかります。 一般的には、/etc/mail/aliases に mailuser :"|/etc/mail/mail-program" とあるなら、/etc/mail/mail-program というファイルの権限で動きます。 例えば % ls -l /etc/mail/mail-program -rw-r--r-- 1 hoge wheel 46632 Sep 19 02:30 /etc/mail/mail-program ならば hoge 権限で動く、ということです。 |
|
>>2428 ですが、 mail-programの権限は以下のようになっています。↓ -rwxr-xr-x 1 root root 165 1・21 19:55 mail-program また /usr/bin/id > /tmp/id.resutl の結果は以下になりました。↓ uid=2(daemon) gid=2(daemon) groups=2(daemon),1(bin),4(adm),7(lp) やはり"deamon"で実行されているようです。sudoresにも正しく設定して いるつもりなのですが、シェルスクリプトは動作しません。 deamonに関してはsudoが使えないのでしょうか。 何かよい方法ありましたら教えてください。 宜しくお願いします。 |
|
>>2429 橋本 …ふむ。 deamon でなく daemon です。sudoers を修正してみて下さい。 |
|
>>2429 橋本 どうもありがとうございます。 deamonではなく"daemon" に修正したところ上手くいきました! とてもお恥ずかしいですが、すごくうれしかったです。 ありがとうございました。 |