
Win2kのCygwinで下記のスクリプトを試してみました。
(ローカルのファイルをscpで自動転送)
$ uname -a
CYGWIN_NT-5.0 upsil 1.5.11(0.116/4/2) 2004-09-04 23:17 i686 unknown unknown Cygwin
$ cat ./test.sh
#!/bin/sh
HOST=192.168.1.105 # scp するマシン名を設定
UNAME=user01 # ログイン名を設定
PASSWD=xxxxxxxx # パスワ-ドを設定
TARGET=/cygdrive/c/cygwin/home/root/hoge
/usr/bin/zip -r $TARGET.lzh $TARGET
expect -c " # expect コマンドを実行
set timeout 20
spawn scp -P 60001 $TARGET.lzh $UNAME@$HOST:/home/fat32/ # expect コマンドの管理下でscpを実行する
expect login:\ ; send \"$UNAME\r\" # login: が出たらログイン名を打ち込む
expect sword:\ ; send \"$PASSWD\r\" # password: が出たらパスワ-ドを打ち込む
#expect \"$\" ; send \"ls\r\" # $ が出たら ls を打ち込む
#expect \"$\" ; send \"exit\r\" # $ が出たら exit を打ち込む
$ which expect
/usr/bin/expect
$ which zip
/usr/bin/zip
$ ./test.sh
と実行すると
: 9: Syntax error: Unterminated quoted string
となり、終ってしまいました。
「expect -c " # expect コマンドを実行」
が問題みたいなのですが何がまずかったのでしょうか?
No.3ベストアンサー
- 回答日時:
おはようございます。
これはおそらく先の質問
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1115230
の参考URLを参照されたのだと思いますが、
私もそのままではうまくいきませんでした。
そのURLの例は間違っているのだと思います。
(動かした後でコメントをいれて、動作確認をしなかったのかな?)
ちなみにコメントを入れる場合は下のように、行末に;
をつけてから入れるとよいようです。
基本的にエラーの原因は#2さんのご指摘のとおりです。
参考URLも良く見ると最後に"がありますよ。(それでも動かないと思いますが。。。)
ただし、今の場合、最後に
interact
を入れないとうまく動かないとおもいます。(少なくとも私はそうでした。)
この掲示板の過去の質問が参考になりました。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=924035
http://oshiete1.goo.ne.jp/kotaeru.php3?q=925167
#!/bin/sh
HOST=192.168.1.105
UNAME=user01
PASSWD=xxxxxxxx
TARGET=/cygdrive/c/cygwin/home/root/hoge
/usr/bin/zip -r $TARGET.lzh $TARGET
expect -c "
set timeout 20
spawn scp -P 60001 $TARGET.lzh $UNAME@$HOST:/home/fat32/ ;こめんと
expect \"password:\" ;こめんと
send \"$PASSWD\r\" ;こめんと
interact
"
参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=924035
http://oshiete1.goo.ne.jp/kotaeru.php3?q=925167
この回答への補足
皆様、ご回答有難うございます。お手数お掛けしております。
> http://oshiete1.goo.ne.jp/kotaeru.php3?q=1115230
> の参考URLを参照されたのだと思いますが、
はい、さようです。
> ただし、今の場合、最後に
> interact
> を入れないとうまく動かないとおもいます。(少なくとも私はそうでした。)
> この掲示板の過去の質問が参考になりました。
> http://oshiete1.goo.ne.jp/kotaeru.php3?q=924035
> http://oshiete1.goo.ne.jp/kotaeru.php3?q=925167
有難うございます。参考になります。
> #!/bin/sh
> HOST=192.168.1.105
> UNAME=user01
> PASSWD=xxxxxxxx
> TARGET=/cygdrive/c/cygwin/home/root/hoge
> /usr/bin/zip -r $TARGET.lzh $TARGET
> expect -c "
> set timeout 20
> spawn scp -P 60001 $TARGET.lzh $UNAME@$HOST:/home/fat32/ ;こめんと
> expect \"password:\" ;こめんと
> send \"$PASSWD\r\" ;こめんと
> interact
> "
/home/fat32/ # expect コマンドの管理下でscpを実行する
コマンドの管理下でscpを実行する: Not a directory
invalid command name "こめんと"
while executing
"こめんと"
となりました。序でに
expect \"password:\" #こめんと
send \"$PASSWD\r\" #こめんと
interact
"
としてみましたら、
/home/fat32/ # expect コマンドの管理下でscpを実行する
コマンドの管理下でscpを実行する: Not a directory
usage: send [args] string
while executing
"send "xxxxxxxx\r" #こめんと"
となってしまいました。
何か勘違いしてますでしょうか?
No.4
- 回答日時:
>expect \"password:\" #こめんと
ごめんなさい。
expect \"password:\" ;こめんと
の「こめんと」は#込みのつもりでした。
書きこんだあとに気づいたのですが、
やっぱり誤解がありましたね。
expect \"password:\" ;#こめんと
としてください。
しかし、コメントなんてイランでしょうから、けずっていいとおもいますよ。
この回答への補足
お手数お掛けしましてスイマセン。
> expect \"password:\" ;#こめんと
> としてください。
> しかし、コメントなんてイランでしょうから、けずっていいとおもいますよ。
expect -c " # expect コマンドを実行
set timeout 20
spawn scp -P 60001 $TARGET.lzh $UNAME@$HOST:/home/fat32/ ;# expect コマンドの管理下でscpを実行する
expect \"password:\" ;#こめんと
send \"$PASSWD\r\" ;#こめんと
interact
"
として、上手くいきました。感動です。 \(^o^)/
これでリモートホストに自動バックアップできます。
どうも有り難うございました。m(_ _)m
No.2
- 回答日時:
おそらく、expect -c " のダブルクォーテーションが閉じられていないからではないでしょうか?
こんな感じで試してみて下さい。
#!/bin/sh
HOST=192.168.1.105
UNAME=user01
PASSWD=xxxxxxxx
TARGET=/cygdrive/c/cygwin/home/root/hoge
/usr/bin/zip -r $TARGET.lzh $TARGET
expect -c "
set timeout 20
spawn scp -P 60001 $TARGET.lzh $UNAME@$HOST:/home/fat32/
expect \"password:\"
send \"$PASSWD\r\"
"
↑これ
この回答への補足
> send \"$PASSWD\r\"
> "
> ↑これ
閉じ「"」が必要だったのですね。
/home/fat32/ # expect コマンドの管理下でscpを実行する
コマンドの管理下でscpを実行する: Not a directory
usage: send [args] string
while executing
"send "user01\r" # login: が出たらログイン名を打ち込む"
となりました。ログイン名は不要でしたね。
No.1
- 回答日時:
こんばんは。
エラーメッセージによると、文が閉じられてない!って怒られてますよね。
「expect -c " # expect コマンドを実行」
この「"」ダブルコーテーションって必要なんでしょうか?
必要だとしてもひとつしかない(=カッコとして成り立ってない)し¥マークもついてないのが気になりました。
※いま手元に環境がないんで私のほうでは試せません。
すいません。
この回答への補足
ありがとうございます。
「"」の直前に「\」を入れたら
missing "
while executing
"""
spawn: not found
couldn't read file "login: ": no such file or directory
send: not found
couldn't read file "sword: ": no such file or directory
send: not found
となりました。
「"」を取っ払ったら
expect: option requires an argument -- c
usage: expect [-div] [-c cmds] [[-f] cmdfile] [args]
spawn: not found
couldn't read file "login: ": no such file or directory
send: not found
couldn't read file "sword: ": no such file or directory
send: not found
となりました。
「/usr/bin/expect -c "" # expect コマンドを実行」
としたら
spawn: not found
couldn't read file "login: ": no such file or directory
send: not found
couldn't read file "sword: ": no such file or directory
send: not found
となりました。でもspawnの行で引っかかってしまいます。
うーん、難しいんですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- その他(プログラミング・Web制作) ラズパイ上の、pythonのエラーについて 1 2023/04/12 23:27
- 英語 英語の不定詞についてです。want to 、expect toなどの熟語の不定詞toは副詞の何用法で 2 2022/08/08 18:58
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- UNIX・Linux cronでシェルスクリプト実行時のkubactlコマンドが機能しない対処法。 2 2022/08/03 18:58
- UNIX・Linux AWSのEC2のZabbixユーザーでawscliコマンドが実行できない状態を解決する 1 2022/12/06 22:17
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- UNIX・Linux デフォルト値のパラメータ展開 1 2022/08/12 17:34
- UNIX・Linux Kali Linuxで起動できない - Minimal BASH Like Line Editing 1 2022/06/03 13:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スクリプトのエラー「unexpecte...
-
bashでシングルクォート内の変...
-
Linuxでシェルスクリプトがフル...
-
シェルスクリプト実行で”そのよ...
-
ロケールをutf8からsjisにする...
-
sudoでNOPASSWDとしてもパスワ...
-
cronの@rebootでのdateコマンド...
-
crontabでjavaだけが上手く動い...
-
Linuxで自作バッチファイルの置...
-
AWSのEC2のZabbixユーザーでaws...
-
crontabでsql/plusの起動
-
Dirコマンドでフォルダ内ファイ...
-
TOPコマンドで表示するCPU使用...
-
batである文字列内に特定の文字...
-
SCコマンドでアクセス拒否
-
エクセルの表にヘンな枠が・・・
-
pingは正常なのにtracerouteで...
-
ラズパイで『’test.service’をs...
-
Linux環境 grepで改行コード(CR...
-
SONYの音楽ソフト「x-アプリ」...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スクリプトのエラー「unexpecte...
-
bashでシングルクォート内の変...
-
シェルスクリプト実行で”そのよ...
-
Linux 月を英語表示したい
-
crontabでjavaだけが上手く動い...
-
Linuxでシェルスクリプトがフル...
-
crontabでsql/plusの起動
-
Cシェルのかっこいいプロンプト...
-
UNIXのbashエラーでnot a valid
-
Linuxで自作バッチファイルの置...
-
cron設定で正常に動作しない
-
sudoでシェルスクリプトを実行...
-
ロケールをutf8からsjisにする...
-
CygwinでX Windiws Systemが起...
-
cronの@rebootでのdateコマンド...
-
hp-uxで時間(時計)を合...
-
自動パスワード入力でscpするス...
-
apachectl start command not f...
-
cronでシェルスクリプト実行時...
-
ldapaddコマンドでエラー
おすすめ情報