質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

Q&A

解決済

3回答

13464閲覧

puttyのmオプションを使ったシェルスクリプトの実行について

domidomi

総合スコア34

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

0グッド

0クリップ

投稿2018/02/20 23:43

編集2018/02/20 23:47

##やりたい事
puttyを起動したら自動でhogeディレクトリに移動する

##状況
putty.exe -load "puttyの設定のセッション名" -pw "パスワード" "vagrant@接続先IPアドレス" -m "fuga.sh"
というオプションをつけてputtyを起動

<fuga.sh> cd /aaa/bbb/hoge

とやってみても上手くいかない。
おそらく、ユーザー名を入力しパスワードの入力をとばして指定のシェルファイルを実行してしまう為、上手くいっていないのだと思われます。(自信はないですが・・・)
![イメージ説明]

-mオプションを抜きでやってみた場合普通にログインされホームディレクトリに行っていました。

<fuga.sh> echo "ドラゴンボール" cd /aaa/bbb/hoge echo "ドラゴンボールZ"

ちなみに上のようにすると
イメージ説明
となります。

##質問したい事
どうすればやりたい事を達成できるでしょうか?
またこの現象の原因は状況に記載した、私の考え通りなのでしょうか?

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

-mで指定したファイルを読んで送信した後、ファイル末尾になったらコネクションを自動的に閉じるのでしょう。バッチ処理的に実行したい場合に使うオプションだと思います。

ログイン後に違うディレクトリに移動していたいのなら、~/.bash_profilecd /aaa/bbb/hogeと書けばいいです。常に移動しちゃいますが。

#追記訂正

-mで指定したファイルを読んで送信した後、ファイル末尾になったらコネクションを自動的に閉じるのでしょう。

違いました。他の端末からpsで見ると、ログインシェルの代わりに、
bash -c "ファイルの中身"
を実行しているようですので、ファイルの中身を実行し終わったらそれで終わりです。
いずれにせよ、実行後に対話処理に移る事はありません。

投稿2018/02/21 04:28

編集2018/02/21 04:44
otn

総合スコア84487

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

domidomi

2018/02/21 06:35

回答、追記ありがとうございます。 コマンドにcmd /kをつけるとウィンドウが閉じずそのままなにかできると聞いたので、cdの前にcmd /kをつけてみたのですがやはり閉じようとしてしまいました。 (cmdというコマンドはありませんのようなメッセージが一瞬でます) 基本的にシェルスクリプトファイルを実行したら、終わった際にセッションを自動的に切ってしまうのでしょうか? 閉じてしまう原因はputtyの-mオプションが原因なのでしょうか? シェルスクリプトファイルを実行したら毎回セッションが切られるという事象が原因なのでしょうか? いくつも申し訳ございません、お時間あるときにご回答いただけると幸いです。
otn

2018/02/21 11:43

> コマンドにcmd /kをつけるとウィンドウが閉じずそのままなにかできると聞いたので、cdの前にcmd /kをつけてみたのですがやはり閉じようとしてしまいました。 cmd というのはWindowsのコマンドです。 > 基本的にシェルスクリプトファイルを実行したら、終わった際にセッションを自動的に切ってしまうのでしょうか? bash -c "~~~" というのは、「"~~~"を実行して終わったら終了」という意味です。bashが終了したらセッションは終わりです。 > 閉じてしまう原因はputtyの-mオプションが原因なのでしょうか? そうです。-m オプションは、「そのファイル中のコマンドを実行して、それが終わったら終わり」というオプションです。 -m 無しの場合もログインシェルのbashがexitコマンドを入れるなどして終わったらセッションが終わりです。それと同じです。
domidomi

2018/03/12 02:05

遅くなりすみません、詳しくありがとうごじざいます。 windowsのコマンドというところの重要知識がぬけていたようです
guest

0

2つの問題点があります。
1つは
puttyの -m は ローカル(機動側、多分windows)のファイルしか認識しないこと、また実行しても EOFで 閉じてしまうこと

2つめは
linux shellでは バッチで起動したcdは起動後別プロセスのため 終了後に反映しないこと

よって -m で行うのは無理だとおもいます。

一番簡単なのは putty 接続ユーザのホームディレクトリを変えてしまうのではだめでしょうか?

投稿2018/02/21 02:09

GBB00516

総合スコア29

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

domidomi

2018/02/21 06:39

回答ありがとうございます。 EOFを止める事はコマンド内では実現不可能なのでしょうか? とめたところで別のプロセスとして扱われているから無意味という事なのでしょうか? puttyでログインして任意のコマンドを実行してこちらの入力を待っている状態にすることは出来ないという事でしょうか?(bashprofileを除き) もしお時間あれば回答いただけると幸いです。
guest

0

putty -load "puttyの設定のセッション名" -pw "パスワード" -m "cd /aaa/bbb/hoge"

接続先情報はセッションに保存されているはずなので上記でどうでしょう?

投稿2018/02/21 01:55

unz.hori

総合スコア1057

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

domidomi

2018/02/21 06:44

回答ありがとうございます。 ーmオプションはコマンドを渡すオプションではなさそうです。 またユーザの情報はputtyのセッション情報に入っていないです。
unz.hori

2018/02/21 06:46

そうですか...。どうしてもputtyでなければダメでしょうか?teratermだったらできると思うんですけど...
domidomi

2018/03/12 02:06

bashprofile作戦でいくことにしました。 teratermも調べてみたいと思います、ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問