
Linuxのシェルを作成しており、その中でFTP接続をしてます。
接続先の特定のファイルのファイルサイズをチェックして、それを変数に入れたいのですが、
変数に入れる部分がわかりません。
Linux内の特定のファイルをFTPで転送して、転送後のファイルサイズが一致してるかをチェックするために上記の対応を行ってます。
FTP接続後に以下のコマンドで、ファイルサイズが調べられることは解りました。
quote SIZE ファイル名
この結果を変数に代入するにはどうすればいいでしょうか?
FTP接続中にそのような対応は可能なのでしょうか?
ちなみに、Linux上では既にファイルサイズを取得している(変数に入れてある)ので、
あとは、この変数と、FTP上で取得したファイルサイズの比較をやりたい。といった状況です。
FTP側で取得したファイルサイズを変数に入れられず困っています。
変数代入方法等ありましたらご教授願います。
No.2ベストアンサー
- 回答日時:
理解してもらえなかったみたいなので、サンプルを書きます。
ご提示のサンプルはヒアドキュメント構文が間違っていたり、ログを取る必要性があるみたいなので多少変えました。
コマンドはlftpにしてますが、こっちのほうが使い勝手がいいと思います。
ftpコマンドのVervoseオプションだとサーバーからのレスポンスが全部戻ってきて制御構造をするためには加工をする必要がありますから。
(test1.sh)
---<ここから>---
#!/bin/bash
NASIP=IPアドレス
TARGET=ファイル名
lftp $NASIP <<END | tee Log.txt
user ユーザー パスワード
put /log/$TARGET /log/$TARGET
quote SIZE /log/$TARGET
bye
END
---<終了>---
というシェルスクリプトを作ります。
これでシェルから
% size=`./test1.sh` && echo $size
とすればSIZEコマンドの標準出力が変数に入りませんか?
丁寧な説明ありがとうございました。
また回答が遅れ申し訳ありません。
確かに希望通りの動作を得られました。助かりました。
ありがとうございます。
No.1
- 回答日時:
可能です。
コマンドの標準出力を変数に格納すれば良いのです。ftpサイトに接続するシェルスクリプトを作成し、ここではサブルーチンと見なします。
そのシェルスクリプトを呼び出すシェルスクリプトを作成し、メインルーチンと見なします。
メインルーチンからサブルーチンをバッククォートもしくは$()で呼びだし、サブルーチンの標準出力をメインルーチンの変数に格納すればいいのです。
サンプルはこんな感じ。
(メインルーチン)
size=`./サブルーチンのファイル名`
sizeという変数にサブルーチンの表示結果が入ります。
回答ありがとうございました。
試して見たのですが、 quoteコマンドが実行できないというエラーが出てしまいました。↓
[root@logserv test]# sh test1.sh
test1.sh: line 77: quote: command not found
やり方が違うのでしょうか?
コードを記述しますので、アドバイスいただけますでしょうか?
ftp -i -v -n $NASIP <<END >>Log.txt
user uset1 user1
bin
put /log/$TARGET /log/$TARGET
size=`quote SIZE /log/$TARGET`
bye
ちなみに、size=`` を記述していない状態では、quoteは正常に動いていました。
変数sizeにquoteの結果を代入する方法を教えて下さい。
お手数ですが、宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
シェルスクリプトでFTPの実行結果を取得するには
その他(プログラミング・Web制作)
-
シェルでftp接続によるファイル取得について
UNIX・Linux
-
ftpコマンドの戻り値をチェックしたい
その他(プログラミング・Web制作)
-
-
4
bashからFTPコマンドのステータスを調べる方法
その他(プログラミング・Web制作)
-
5
FTP送信エラーの検知について
その他(プログラミング・Web制作)
-
6
FTPでリモートのファイル一覧取得
その他(プログラミング・Web制作)
-
7
Linux shell ftp 転送 エラー制御
UNIX・Linux
-
8
コマンドプロンプトのFTPコマンド内での「変数」
その他(プログラミング・Web制作)
-
9
FTPに接続し、 あるフォルダ内の一覧を取得する、、、という操作を Windows10のコマンドプロ
Windows 10
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Core 2 Duo の古いパソコンに最...
-
VirtualBox 6.1 → 7.1 でUbuntu...
-
LinuxでWine使うとどのくらいWi...
-
「トゥ]の出し方
-
インストールできないですどう...
-
ubuntu(linux)のシャットダウン...
-
私のパソコンでVirtualBoxは使...
-
Linux のシェルスクリプトの強...
-
bashでシングルクォート内の変...
-
2TBのUSBメモリを2000円ほどで...
-
Ububtuでファイル共有できない...
-
WinSCPでLinux(CentOS6.10)に...
-
Linuxでブートディスクの交換後...
-
windows10を使っています。 wsl...
-
ubuntuで デイスク/deb/loopと...
-
ubuntu 22日本語Remixのisoイメ...
-
LinuxのPCは基本不要PC中古を使...
-
Ubuntu on Xorgのログインについて
-
Ubuntu でinvalid filenameとな...
-
VirtualBox ゲストOSにPC内蔵HD...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
scpコマンドでリモートサーバの...
-
Illustratorのデータをまとめて...
-
【ターミナル】MacBookにディー...
-
DOSコマンドでのワイルドカ...
-
Windows10のRegSys32に登録され...
-
UNIXシェル内での日付計算
-
Warning: Output is not to
-
SolarisからWindowsへFTPすると...
-
ウィンドウズお自動起動後、ラ...
-
cactiでグラフが表示されない
-
IBM漢字コードのSJIS変...
-
別名でリンク先を保存。
-
FTP接続中のコマンド実行結果を...
-
「xcopy /s d:\\ f:\\」の意味は?
-
CPUのbit数を調べるコマンド
-
ACCESSでセキュリティ警告が出...
-
BATファイル実行にフォーカ...
-
rcpコマンドについて、教えて!
-
MSDOSコマンドについて教...
-
システムまるごとコピーする方法
おすすめ情報