UnixのシェルでFTPを行っていますが、
接続不可の時にエラーの戻り値を取りたいと考えています。

ただ、

OPEN XXX
user aaa acount bbb
get ファイル名 取得先/ファイル名
bye

というシェルを実行した場合、接続先XXXが有り得ない場合、
戻り値($?)が0以外かと思っていたのですが、表示させると0になっていました。
接続できません、というメッセージは表示されるのですが。。。
戻り値でエラーを判断する方法をご存知の方、よろしく
お願いします。

A 回答 (2件)

こんにちわ。


当方ではftpを自動実行する際、以下のようにしてます。

以下、シェルの内容
------------------------------------------------------------------
#!/bin/csh
ftp -n ホスト名 <<EOF >& 標準エラー出力リダイレクトファイル名
user aaa acount bbb
get ファイル名 取得先/ファイル名
bye
EOF

if (-z 標準エラー出力リダイレクトファイル名) then
exit(0)
else
exit(1)
endif
------------------------------------------------------------------
以上、シェルの内容

簡単に言うと、ftpコマンドにてエラーが発生するとそれらは標準エラー出力
に出力されるので、それをリダイレクトしてファイルサイズが0バイトであれ
ばエラーがなかったと判断しています。
エラーが発生した場合は、そのリダイレクトしたファイルを見れば内容がわかります。
今のところ問題なく動作しています。
    • good
    • 0
この回答へのお礼

現在テストのできない状況になってしまったので、
確認ができないのですが、それでいけそうな気がします。
どうもありがとうございました!

お礼日時:2001/08/17 11:11

ping コマンドで一度接続して確認すればどうでしょう。



ping XXX -n 1 >& /dev/null
と実行し、失敗すれば 0以外が返ります。
    • good
    • 0
この回答へのお礼

pikacchuさんのところにも書いた通り、現在テストが
できない状況になってしまいました。
できるようになったら早速試してみます。
早速のご回答、どうもありがとうございました。

お礼日時:2001/08/17 11:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qコマンド一覧を取得するには?

「実行可能なコマンド一覧を出力する」コマンドはありますでしょうか?

個人的には,「~wm」という文字列で終わるコマンドを調べたいのですが,そのためにコマンド一覧からgrepで検索しようと思いました.

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

Aベストアンサー

$PATHのなかから実行可能なものをリストするスクリプトです。
ちなみに私の場合wmで終わるものは、
/usr/bin/pbmtocmuwm
/usr/bin/gnome-wm
/usr/bin/dh_installwm
でした。
-- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< --
#! /bin/sh
echo $PATH |
awk -F: '
{
for (i = 1; i <= NF; i++) {
printf("find %s -type f -ls\n", $i);
}
}' | sh |
awk '
$3 ~ /x/ {
print $NF
}'

Qpostfix:aaa.bbb.ac.jpからしか送信できないのをbbb.ac.jpがつけば送信できるようにしたい。

RHL9.0でpostfixを使用しています。
現在ホスト名がmail.aaa.bbb.ac.jpのメールサーバがあります。***.aaa.bbb.ac.jp(123.4.56.*)というDNS登録がされていればクライアントから送信できます。しかし、***.ddd.bbb.ac.jp(123.4.78.*)と建物が違うためにmain.cfのmydomain=aaa.bbb.ac.jpではないPC(ただし、メールアドレスは@aaa.bbb.ac.jp)からは送信できません。これをbbb.ac.jpとつけばメールの送信がかのうとするにはmain.cfのどこを書き換えればよいのでしょうか。mydomainをbbb.ac.jpとするのでしょうか?

以下はmain.cfの一部です。

myhostname=mail.aaa.bbb.ac.jp
mydomain=aaa.bbb.ac.jp
mynetworks = 123.4.56.0

Aベストアンサー

/24というのはサブネットなんで現在のネットワークにあわせたものに変更して欲しいですが。
/24ではこの場合にはダメなのでは?
255.255.0.0のようなケースなら/16のように指定が必要でしょう。
ドキュメントやgoogleなどで見た感じではこれに加えて
smtpd_recipient_restrictions = permit_mynetworks,check_relay_domains
としておけば大丈夫だと思えるのだけど。
この場合では
myhostname = aaa.bbb.ac.jp
mydomain=bbb.ac.jp
のようにあげないとダメだとは思いますけど。

頑張ってみてください。
PostfixはLinuxでは結構入っているので知っている人が多そうですがフォロー出てきませんね?
あまり使ったことがないので申し訳ない程度に

QMS-DOSで使えるコマンド一覧を表示するコマンド

そのコマンドを入力すれば、MS-DOS内で使える
コマンド一覧が表示されるコマンドを知りたいのですが
どなたかご存知の方、いらっしゃいませんか?
UNIXで言うところのmanコマンドに当たるものです。

Aベストアンサー

Windowsカテゴリなので、MS-DOSのことじゃなくて、WindowsのDOSプロンプトとか、コマンドプロンプト内で使えるコマンドのことだと思います。

1) どんなコマンドが使えるか
Win9x,Me系: \windows\command のフォルダに主なコマンドがあります
Win2K,XP系: help で主なコマンドが出ます
どちらも管理系のコマンド等は別のところにあったりします。

unixでもmanコマンドでは「使えるコマンド一覧」はわかりません。網羅的に調べるには PATHにあるディレクトリをひとつずつ ls して調べるしかないです。Windowsでも同じで、PATHにあるディレクトリをひとつずつ調べるしかないのですが、GUIでしか使えないコマンドも混じっています。アイコンの絵がついているものはおおむねGUIですが、逆は真ではないので調べるのは難しいです。

上記の主なコマンド以外も含めたプロンプトで使えるコマンドを網羅的に知りたいなら書籍を見るのが早道でしょう。

2)unix の man 相当機能
上記主要コマンドについては、コマンド名 /? で使い方が出ますが、それ以外の管理系コマンドでは出ないことが多いです。Webか書籍で調べるしかないです。

Windowsカテゴリなので、MS-DOSのことじゃなくて、WindowsのDOSプロンプトとか、コマンドプロンプト内で使えるコマンドのことだと思います。

1) どんなコマンドが使えるか
Win9x,Me系: \windows\command のフォルダに主なコマンドがあります
Win2K,XP系: help で主なコマンドが出ます
どちらも管理系のコマンド等は別のところにあったりします。

unixでもmanコマンドでは「使えるコマンド一覧」はわかりません。網羅的に調べるには PATHにあるディレクトリをひとつずつ ls して調べるしかないです。Win...続きを読む

QXXX.pagファイルとXXX.dirファイルの中身が見たい。

拡張子が「pag」「dir」のファイルの中身を見たいのですが、どのようなコマンドを使えば
読むことが可能でしょうか?

使用しているOSは、Solaris8です。

宜しくお願いします!

Aベストアンサー

#3の方の言われるとおり,dbm形式のデータベースファイルだと思います。
dbmのデータとして読み出したいのであれば,下のようなPerlスクリプトを使えば出来ます。

#!/bin/perl
dbmopen(%dbmassoc, 'データベース名', undef);
while (($key, $val) = each %dbmassoc) {
print $key . "\t" . $val . "\n";
}
dbmclose(dbmassoc);

'データベース名'のところには,例えば /etc/aliases.pag や /etc/aliases.dir なら '/etc/aliases' を入れます。
このスクリプトでは,キーと値をタブで区切って出力しています。

そうじゃなくて,pagファイル,dirファイルそのものの中身が読みたいのであれば,バイナリビューアーなどを使えばよいと思います。私はbviewやhexeditなどのツールを使っています。OSに標準で含まれているツールではないので,どっかから探しだしてきてインストールしてください。

#3の方の言われるとおり,dbm形式のデータベースファイルだと思います。
dbmのデータとして読み出したいのであれば,下のようなPerlスクリプトを使えば出来ます。

#!/bin/perl
dbmopen(%dbmassoc, 'データベース名', undef);
while (($key, $val) = each %dbmassoc) {
print $key . "\t" . $val . "\n";
}
dbmclose(dbmassoc);

'データベース名'のところには,例えば /etc/aliases.pag や /etc/aliases.dir なら '/etc/aliases' を入れます。
このスクリプトでは,キーと値をタブで区切って出力...続きを読む

Qコマンドプロンプトを使ってネットワークの一覧を表示

コマンドプロンプトを使ってネットワークの一覧を表示する方法
LAN内のPCやプリンタ、ネットワーク機器のIPアドレスを
調べて一覧にするコマンドプロンプトのコマンドはありませんか?
固定IPかDHCPから割り振られたIPか、わかると更に嬉しいです。

なければそういった機能があるソフトでもいいので
ご紹介頂けると幸いです。

Aベストアンサー

こちら参考に
★lan内のpcをipアドレスで一覧表示したい | OKWave
http://oshiete.goo.ne.jp/qa/5829669.html

QC:\Users\All Users がエクスプローラーで表示されません。

Windows7からアップグレードしたWindows10を使用しています。

エクスプローラーで、
C:\Users
の場所を開いても、「All Users」のフォルダは表示されていません。

パスを入力する欄に、
C:\Users\All Users
を入力し、エンターを押すと、そのフォルダの中が表示されます。

なお、エクスプローラーのメニューの、
「表示」の「隠しファイル」のチェックボックスはチェックが入っている状態で、
それによって、隠しファイルになっているフォルダは半透明で表示されています。

どのようにすれば、
C:\Users\All Users はエクスプローラーで表示されるようになりますか?

Aベストアンサー

C:\Users\All Users は C:\ProgramData のシンボリック リンクになっています。
C:\Users の下にある All Users は ProgramData のショートカットでその名前をAll Usersとしてある、と考えればよいかと思います。
[フォルダオプション]
→[表示]タブ
→[保護されたオペレーティングシステムファイルを表示しない]
のチェックを外してみるとC:\Usersの下にAll Users が出てきます。

Qls コマンドで *.jpg と *.JPG の画像一覧を出したい

ls コマンドいっぱつで、
*.jpg または *.JPG の画像一覧を出したいのですが
どう引数を指定したらよいでしょうか..??

Aベストアンサー

ls *.[jJ][pP][gG]

でどうですか?

Qシェルの中から他のシェルを呼び出す

例えば、ひとつのシェルファイル( aaa.sh )の中に、
-------------------------
#!/usr/bin/csh
set HOME=/home/test/tmp
bbb.sh
-------------------------
と記述した場合、bbb.shで変数$HOMEを使いたいと思いましたが、
使えないようです。(HOME: 未定義の変数と表示されます)
どなたか、これ以外の方法で、このように
シェルからほかのシェルを呼び出して、変数も引き継がれるような方法ご存知ないでしょうか?
多分こーやれば、こうなるかも!みたいなご回答でも結構ですので情報提供をお願いします。

どうぞ宜しくお願い致します。

Aベストアンサー

たぶん環境変数は引き継がれます。
setenvを使えばいいように思います?

Qコマンドプロンプトの操作一覧

コマンドプロンプトでできる操作一覧のようなサイト、もしくは書籍を探しています。

たとえば、ipconfig /renew でIPアドレス再取得 …など

今一番知りたいのは、回線速度が安定して通信できているかを
先日、業者さんがきて、PCでやってたのが知りたいのですが
こんごもいろいろ調べて行きたいので
わかりやすい一覧のサイトがあればと思います。
よろしくお願いいたします。

Aベストアンサー

業者さんがカッコよく仕事してる姿見てると
ホント、惚れますよね~~(笑)

んでまあ、つい最近の記事(これから追加されていく)なんですけど、
ネットワーク関係ならこのへん読むといいかもですね~。

で、IT Proなんですけど、ひじょーに為になるのでぜひブックマーク
しておいてください。毎日読んでると結構勉強になりますよ~~。


っちゅうわけで、以上な感じで。


*****************************************

ネットワーク・コマンド道場

目次

日経NETWORK

 ネットワーク技術者を目指す人なら,ぜひ身につけておきたい
コマンドの使い方を解説していきます。コマンドによって何ができ,
実行結果から何が読み取れるか,現場で役立つ実践的な知識
が身につきます。(2006年02月06日)

http://itpro.nikkeibp.co.jp/article/COLUMN/20060125/227900/

↑ネットワーク技術者を目指してなくても、読んだら面白い…
と思うよ。はい。


結果を読めなきゃ意味ないから、全部読んでね☆

業者さんがカッコよく仕事してる姿見てると
ホント、惚れますよね~~(笑)

んでまあ、つい最近の記事(これから追加されていく)なんですけど、
ネットワーク関係ならこのへん読むといいかもですね~。

で、IT Proなんですけど、ひじょーに為になるのでぜひブックマーク
しておいてください。毎日読んでると結構勉強になりますよ~~。


っちゅうわけで、以上な感じで。


*****************************************

ネットワーク・コマンド道場

目次

日経NETWORK

 ネットワーク...続きを読む

Qhttp://xxx.com/~○○ で見れない (redhat)

WEBサーバを設定しています。

http://xxx.com/~○○/
でアクセスするとindex.htmlが表示されるのですが、

http://xxx.com/~○○
スラッシュ無しでアクセスするとエラーが返ってきます。

プロバイダなどでは、表示するようになってると思うのですが、どうすれば、スラッシュ無しでもアクセスできるようになるのでしょうか??よろしくお願いします。

因みに、apache/1.3.12を使っています。

Aベストアンサー

手っ取り早くするには、httpd.confにある、<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

<Directory />
Options all
AllowOverride all
</Directory>
にして、Apacheをリスタートしてください。
 いろいろと問題も発生しますので、
http://httpd.apache.org/docs/
 を参考に、ご自分になりの設定に挑戦してくださいね。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報