お世話になります。
現状と困っていること。
現在、Solarisサーバを起点に複数のRHEL7サーバへWarファイルの
SCP転送を行おうとしております。
シェル配置先のサーバは運用中の環境にいるため、sshpassの導入や、
公開鍵での作成が出来ないことから
Solarisに入っているExpectコマンドを使用して接続を行いたいと考え、ツールを作成しています。
しかしながら、expect句でパスワードを引っかけることが出来ずエラーとなっている状況です。
なお、プロンプト上から
以下コマンドを手打ちすると問題なく通るため、さらに???となっている次第です。
bash
1OSPASSWORD='PASSWORD!' 2 3expect -c " 4set timeout 15 5spawn /usr/bin/scp ${SOURCE_PATH} ${USERNAME}@${TARGETIP}:${TARGET_PATH} 6expect { 7 \"Are you sure you want to continue connecting (yes/no)?\" { 8 send \"yes\n\" 9 expect -nocase \"password\" { 10 send \"${OSPASSWORD}\n\" 11 } 12 } 13 \"password\" { 14 send \"${OSPASSWORD}\n\" 15 } 16} 17interact 18"
上記コマンドをシェルスクリプトへ取込み、
sh -x にて実行した結果が以下の通りとなります。
[TESTUSER@HOST] $sh -x AAAA.sh --- 前略 --- + /usr/bin/expect -c $'\nset timeout 10\nspawn /usr/bin/scp /var/tmp/testdir/test.war USERNAME@192.168.XXX.XXX:/tmp/\nexpect "Are you sure you want to continue connecting (yes/no)?" {\n send "yes\n"\n expect "password:"\n send "P@SSW0RD!\n"\n} expect "password:" {\n send "P@SSW0RD!\n" \n}\ninteract\n' spawn /usr/bin/scp /var/tmp/testdir/test.war USERNAME@192.168.XXX.XXX:/tmp/ USERNAME@192.168.XXX.XXX's password: [TESTUSER@HOST] $
上記の通り、パスワードを引っかけることなくタイムアウトして抜けてきてしまう状態です。
※一部情報を伏せております。
環境情報
SCP送信元: Solaris 11.3(bash 4.4.11)
SCP受信先: RedHat Enterprise Linux 7.4
試したこと
・プロンプト上から直接、コマンドを実行
⇒正常に処理が行われ、対象先に転送されていることが確認できた。
・"password:"の部分を「USERNAME@192.168.XXX.XXX's password:」に修正した上で実行
⇒事象に変化なし(転送できず)
Solaris環境と言うこともあり、Linux bashでは出来ることが出来なかったりして困っております。
皆様の知恵をお貸しください。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/15 03:00 編集
2020/12/15 09:05
2021/01/21 00:37