シェルからssh接続でファイルの存在確認を行う方法

このQ&Aのポイント
  • シェルからssh接続してファイルの存在確認を行いたい場合、以下のシェルを使用することができます。
  • このシェルは、javaのテストプログラム数文を実行しテストで出力するファイルの存在チェックを行います。
  • 実行環境へ移動してjava -jarコマンドを実行し、ファイルの作成確認を行います。
回答を見る
  • ベストアンサー

シェルからssh接続

お世話になります。 現在、シェルからssh接続してファイルの存在確認を行いたく以下のようなシェルを作成したのですが、 上手く動作できなく困っております。(ssh接続したところで動きが、とまります。) 解決策が、わかる方がいらっしゃいましたらご教授願えますでしょうか。 私の使用している環境は、接続元・接続先ともにcentOS5.5です。 公開鍵を設定し以下のようにノンパスワードでログインできる事は、確認しております。 [root@localhost ~]# ssh 192.xxx.xxx.xxx Last login: Sun Jan 8 16:45:13 2012 from 192.168.1.250 [root@localhost ~]# ※以下のシェルは、javaのテストプログラム数文を実行しテストで出力するファイルの存在チェック  を行っています。 #!/bin/sh FILEDIR=/usr/local/test JAVADIR=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin TESTDIR=/temp/Test_pro INPUTDIR="${TESTDIR}/input" WORKDIR="${TESTDIR}/work" JARFILE="${TESTDIR}/Test.jar" PROFILE="${TESTDIR}/set.property" REMOTEHOST=192.xxx.xxx.xxx #FILEDIR内のディレクトリを削除 rm -Rf ${FILEDIR}/* TESTTARGET=`find ${WORKDIR} -type f | sort -r` for FILE in ${TESTTARGET} ;do echo "${FILE} START " #テスト対象プロパティファイル削除 & 移動 cd ${INPUTDIR} rm -f ./* cd ${WORKDIR} cp -p ${FILE} ${INPUTDIR} #実行環境へ移動 cd ${JAVADIR} #実行 java -jar ${JARFILE} ${PROFILE} echo "192.xxx.xxx.xxx" `ifconfig` LOGIN=`ssh ${REMOTEHOST}` echo ${LOGIN} echo "192.xxx.xxx.xxx" `ifconfig` #ファイル作成確認 cd ${FILEDIR} FILECNT=`find ./ -name [0-9]* | wc -l` if [ ${FILECNT} -eq 1 ] ; then DIRNAME=`ls` echo "FILE MAKE " ${DIRNAME} mv ${DIRNAME} ${FILE]} echo "FILE RENAME " ${FILE} else echo "FILE NOT MAKE " fi echo "${FILE]} END " done お手数お掛け致しますが、よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

こんにちは よーわからんおですが、シェルでSSH接続で遠隔操作はできないのでは? それはtelnetでも同じだと この場合には、リモートシェルとか使うんじゃないですか?

kenken1917
質問者

お礼

早速のご回答ありがとうございます。 ssh ${REMOTEHOST} find ${FILEDIR} -name ${FILENAME} | wc -l ssh ${REMOTEHOST} mv ${FILEPATH} ${FILEPATH}.${TESTNAME} のようにしたら実行できました。

関連するQ&A

  • msys(cygwin)で、シェルスクリプトのcdが動かないのは何故?

    msys(又はcygwin)で、シェルスクリプトに書いたcdが働きません。その解決方法を伺っても宜しいでしょうか?具体的には、下のような状況です。 [シェルスクリプト内容] #!/bin/bash echo cd前 cd testdir # ↑testdirは既存。コマンドラインから手打ちすると機能する! echo cd後 [実行結果の表示] cd前 : No such file or directory cd後 [環境] ・WinXP + 最新全パッチ適用 ・msysとcygwinをインストール 以上 どうか宜しくお願い致します。

  • シェルスクリプト内の「exit」

    クライアントからteratermでservAに接続します。 そこからservBに接続します。 $ ssh servB サーバーBに個人のディレクトリがあり、そこにシェルスクリプトを作っています。 そのシェルスクリプトは「exit 0」で終わっています。 これを実行すると、サーバーBからログアウトしてしまいます。 exitはシェルスクリプト内で使うと、シェルスクリプトを終了するだけかと思ったのですが、ログアウトもしてしまうものなのでしょうか? exitを書かなければ、ログアウトすることなく、カレントディレクトリは変わらないままです。 実行するたびに $ ssh servB $ cd work/mydir と実行しないと自分のディレクトリに戻ってこれないので不便です。 色々と調べたのですが、なぜログアウトしてしまうのかわかりません。 どうすれば、ログアウトしないのか教えて下さい。 よろしくお願いいたします。 シェルスクリプト(TEST) #!/bin/bash -xv echo hello! exit 0 実行結果 [company@servB mydir]$ . TEST hello! Connection to servB closed. [company@servA ~]$

  • MySQL用のSSHトンネル

    PHP+Laravelで古いデータベースから新しいデータベースにインポートする機能を作ろうとしています。 まずは古いデータベースにアクセスしてSELECTするだけを実装しようとしています。 ただPDOからはSSH接続は直接できず、sshコマンドでトンネルして接続しておくという記事を見たので同様に行いたいのですが、sshコマンドのパラメータの指定が分かりません。 まずWindowsのMySQL Workbench 8.0 CEから以下の設定で接続できることを確認しています。 Connection Method : Standard RCP/IP over SSH SSH Hostname : xxx.xxx.xxx.xxx:22 SSH Username : hogehoge SSH Key File : foofoo.pem MySQL Hostname : 127.0.0.1 MySQL Server Port : 3306 Username : piyopiyo 次にCentOS 7.9.2009からsshでコマンドを指定する場合以下のようにするようですが、localhostの頭のポートの指定が分かりません。 ssh -i /certs/foofoo.pem -N -L ????:127.0.0.1:3306 hogehoge@xxx.xxx.xxx.xxx 上記の????には何を設定すればよいのでしょうか? 検索で出てくる記事は13306を指定していますが、このポートはどこで設定されているのでしょうか? 旧 MySQL : 5.7.29 新 MySQL : 8.0.29 (CentOS 7.9.2009)

  • 簡単なシェルスクリプトを見てください。

    次のようなシェルスクリプトを作成しました。 #!/bin/sh echo [$1] awk '/"0312345678"/ {print}' /test > /test1 awk '/$1/ {print}' /test > /test2 のように簡単なスクリプトです。 $ sample \"0312345678\" で実行させたら、echo では"0312345678"に出力されます。 しかし、test1にはちゃんと結果が入っていますが、test2は空のファイルです。 なぜ、結果が違うのですか? 実行時、引数を渡す方法で、test1と同じ結果を得たければ、どうすればいいのですか?

  • linux シェルの変数、引数の指定について教えて

    シェルの勉強を始めまして、 ファイルを複合化、解凍するだけのシェルを作ろうと思っています。 fukugo.sh $1 でシェルを実行 /home/allday/log/upload/201701261507(←ログの作られる時間で変わります)aaaaa.tar.gz.e というファイルを$1引数に指定 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー !/bin/sh # # init CWD=$(cd $(dirname $0) && pwd) #cd ${CWD} # if [ -z $1 ] then echo "引数を指定してください" exit fi echo "Start" echo "指定されたtarファイルを複合化します" fukugo-decrypt $1 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー fukugo-decryptは私の会社で使われているtarを複合化するコマンドです(環境変数?) 複合化すると /home/allday/log/upload/201701261507aaaaa.tar.gz というファイルになります。 このできたファイルをシェルに入れる次のコマンドの引数にしたいです。 が最後の.eが無くなるため$1では指定できないと思います。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー echo "複合化されたファイルを/tmpフォルダに入れておきます" mv /home/allday/log/upload/201701261507aaaaa.tar.gz /tmp/ echo "ファイルを展開します" tar zxvf /tmp/201701261507aaaaa.tar.gz echo "End" ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 複合化された後の/home/allday/log/upload/201701261507aaaaa.tar.gzや 移動後の/tmp/201701261507aaaaa.tar.gzは変数で設定するとよいと聞いたのですが、 どのように設定すればよいかわかりません。 お分かりになる方、お願いします。 教えてください。

  • シェルでftp接続によるファイル取得について

    以下のようなシェルスクリプトを作成しましたが、 (file-name) get: No such file or directory (file-name) done: No such file or directory のエラーメッセージが出てしまい、うまくいきません。 OSはLinux(FedoraCore4)です。 どうやらファイル名の取得がうまくいかず、エラーになっている 様です。 試しに直接ファイル名を指定して書くと、無事ファイルを 取得できます。 エラーの原因がお分かりになる方、どうぞ宜しくお願い致します。 ----------------------------------------------- #!/bin/sh cd /local_test/log/ ftp -n xxx.xxx.xxx.xxx<< _EOF user test_user test_pass cd /test/log/ ascii prompt for i in *.log do chmod u+r $i get $i chmod u-r $i done bye _EOF exit 0 -----------------------------------------------

  • BシェルでIPアドレスの入力

    お世話になっております。 BシェルでIPアドレス、及び、SUBNETを 入力させるシェルを作成しております。 7桁以上15桁未満は処理しない方法は 分かるのですが 以下処理に困っております。 ・xxx.xxx.xxx.xxxの形式で処理する ⇒ 例) xxx..xxx.xxx.xxは処理しない ・数字以外は処理しない  ⇒ 例) 19a.168.11.1は処理しない 参考になるサイト、及び、情報などありましたら ご教示頂きたく宜しくお願い致します。 ■入力処理 while [ $ENV -eq 0 ]; do echo "IP" read SET_IP echo "SUBNET" read SET_SUBNET echo "IP :" $SET_IP echo "SUBNET:" $SET_SUBNET echo "yes/no" read ans case "$ans" in "yes" | "Yes" | "YES" | "y" | "Y" ) ENV=1 ;; "no" | "No" | "NO" | "n" | "N" ) ENV=0 ;; *) ;; esac done ■入力された値を確認する処理 追記したい処理  xxx.xxx.xxx.xxx形式である事を確認  条件  ⇒ 7桁以上15桁未満である   ⇒ xは数字である   ⇒ xx..xxx.xxx.xxx形式などは処理しない ■ネットワークファイルの書換え ■ネットワークサービスの再起動

  • CentOSでSSH公開鍵認証ができません。ログの場所はどこでしょうか?

    puttyからCentOS4.1のサーバーへ公開鍵認証による SSH接続ができません。 http://nekhet.ddo.jp/item/771 の通り設定したのですが・・ サーバーの/home/test/.ssh/authorized_keys にputtyで作成した公開鍵をちゃんと登録しています。 しかし、SSHでログインIDを入力すると、 login as: test Authenticating with public key "XXXXXXXXXX" とならず、ログインIDを入力した時点でputtyが 落ちてしまいます。原因を調べたいのですが ログのありかはどこでしょうか?

  • CSHの環境変数の設定

    CSHで外部で定義したconfigファイルから変数を読み込み そのシェル及び子シェル内で有効な変数として使用したのですが どのような方法がありますでしょうか? 以下の方法だと親シェルからでは子シェルで設定した変数が読み込めないため困っています。 config.csh #!/bin/csh -f setenv AAA aaa test.csh #!/bin/csh -f set APP_ROOT = `dirname $0` cd $APP_ROOT set CONFIG_FILE=$APP_ROOT"/config.csh" echo $AAA

  • grepコマンドを使ったシェルについて

    いつもお世話になっております。 今回は、以下の仕様なシェルを作りたいのですが、お力をお貸しください。 ファイルからある文字列(xxx)を含んだ1文を抽出します。しかしこの1文の1段上に時間が表示されているのですが、この時間も一緒に持って期待と思っています。該当文字列は膨大にあるので時間帯で分けたいと思います。 例: ファイル名:TEST.txt yyyy/mm/dd 00:00:00          ←時間帯も抽出したい AAAAAAA BBBBBBBBBBBBB CCCCC xxx DDDD ←この一文を他のファイルにコピーします。 grep xxx TEST.txt > TEST.log 上記の該当文字列の1段上の時間帯も引っ張りたいのですがどの様にすればよいでしょうか? 宜しくお願い致します。