プロが教える店舗&オフィスのセキュリティ対策術

# gnome-terminal -e "sh -c 'ssh localhost;cd ビデオ;exec bash'"

を実行するとこれを実行したgnome-terminalとは別に新たなgnome-terminalが開かれ
localhostの/root/ビデオ
のディレクトリに移動できます.
ところが

# gnome-terminal -e "sh -c 'ssh 192.168.2.6;cd ビデオ;exec bash'"

を実行してもこれを実行したgnome-terminalとは別に新たなgnome-terminalが開かれますが
192.168.2.6のPCの/root
のディレクトリに移動してしまい
192.168.2.6のPCの/root/ビデオ
に移動できません.

後者の場合に
192.168.2.6のPCの/root/ビデオ
に移動させる方法はあるでしょうか?

よろしくお願いします.

A 回答 (7件)

いまさらFedora14の環境を用意するのに手間取りました……。



>ssh 192.168.2.6 'cd ビデオ;ls > ../aa.txt'
>を実行すると
>何も表示されずにカーソルが次の行にいって
>自PCのプロンプトが出るだけです.

それは正常です。
ちなみに、どんなコマンドが実行されてどういう結果になったのか…という事は理解されてます?


こちらで用意したFedora14の環境(インストールしてyum updateしてVMWare toolsインストールした)では、
「引数を解析できませんでした: ディスプレイをオープンできません:」は発生しませんでしたね。

export DISPLAY=
として、環境変数を削除した場合は…
[user@Fedora14 ~]$ gnome-terminal -e "ssh 192.168.61.130 'cd rpms;ls > ../aa.txt'"
引数を解析できませんでした: ディスプレイをオープンできません:
[user@Fedora14 ~]$
でしたし。(接続先のホスト名は…localhostになってる)
# 実際にはsshコマンドに-lでログイン名指定していますが…まぁ、本題ではないので省略。
パスワードの入力要求も出ませんでしたから、sshコマンドの処理もされていないでしょう。
# 接続先は最小インストールしたCentOS6.4。
# rpmbuild用に作成したディレクトリがあるので、そこに移動いるようにしてる。


「引数を解析できませんでした: ディスプレイをオープンできません:」が発生する環境でprintenvコマンドで環境変数を表示したらどうなりますかね?

この回答への補足

根気強い回答ありがとうございます.
同じ端末を何度も使っていると動作が違ってきます.
新しく端末を開いた後
ssh 192.168.2.6 'cd ビデオ;ls > ../aa.txt'
を実行すると
[root@fx8120 ~]# ssh 192.168.2.6 'cd ビデオ;ls > ../aa.txt'

と端末が実行状態になったままです.

gnome-terminal -e "ssh 192.168.2.6 'cd ビデオ;ls > ../aa.txt'"
を実行すると
[root@fx8120 ~]# gnome-terminal -e "ssh 192.168.2.6 'cd ビデオ;ls > ../aa.txt'"
[root@fx8120 ~]#

となり一瞬新しい端末ウィンドウが開いてすぐに閉じます.
引数を解析できませんでした: ディスプレイをオープンできません:
が出なくなったので状態が変わったのかも知れません.

補足日時:2013/04/23 19:25
    • good
    • 0
この回答へのお礼

私のこの質問の目的は
シェルスクリプトで3つのPCを操作できる端末ウィンドウを開きそれぞれを所定のディレクトリに移動させておく.
ということなのです.
だから質問文にかいたような形式の複合コマンドになります.

お礼日時:2013/04/23 19:34

># gnome-terminal -e "ssh 192.168.2.6 'cd ビデオ;ls > ../aa.txt'"


>引数を解析できませんでした: ディスプレイをオープンできません:
>[root@prime ~]#

接続先(192.168.2.6)の名前は「prime」で合っている。と言うことでOKでしょうか?

手元で実験した限りだと……
「引数を解析できませんでした: ディスプレイをオープンできません:」は『TeraTermなどで接続している状態で実行する』と発生しましたね。
実行しているターミナルではDISPLAY環境変数がありませんから、当然ですが……。
# export DISPLAY=なんちゃら で設定すれば成功するんじゃないですかね。
たぶんCUIで実行している状態でコンソールから実行しても発生するのでしょうが、コンソールからでは日本語の入力はできないでしょうから「ビデオ」の入力ができないでしょう。

クライアントがGUIで起動していて、ログイン済み。
で、クライアントのターミナル(GNOME ターミナル)から上記のコマンドを入力する必要がありますが……。


#2のお礼の時点ではGNOME ターミナルが起動できていたようですが、#3の補足を書いている時点ではどういうふうに操作したのでしょうか?
# コピペが手間だからWindowsとかからTeraTermなりで実行しました。なんて事はないですか?


あとは……
ssh 192.168.2.6 'cd ビデオ;ls > ../aa.txt'
だけで実行したらどうなりますか?

この回答への補足

度重なる回答ありがとうございます.
歯医者に行っていました.

fedora14のgnome-terminalのみでやっています.

ssh 192.168.2.6 'cd ビデオ;ls > ../aa.txt'
を実行すると
何も表示されずにカーソルが次の行にいって
自PCのプロンプトが出るだけです.

[root@fx8120 ~]# ssh 192.168.2.6 'cd ビデオ;ls > ../aa.txt'
[root@fx8120 ~]#

接続先(192.168.2.6)の名前は「prime」で合っている。と言うことでOKです.
接続元192.168.2.7「fx8120.box」
接続先192.168.2.6「prime.am」
です.(拡張子部分は表示で省略される様です)

ウィンドウズは1年にI、2日しか使いません.
以前使ったのは3ヶ月前に3時間程度です.
e-taxのために仕方なく使っているのです.

補足日時:2013/04/22 18:10
    • good
    • 0

># gnome-terminal -e "ssh 192.168.61.131 'cd vmware-tools-distrib;ls > ../aa.txt'"


>引数を解析できませんでした: ディスプレイをオープンできません:

コマンドの内容理解してやってますか?
貴方の環境で192.168.61.131に接続できるんですか?
また、ログインした先のホームディレクトリにvmware-tools-distribというディレクトリがあるんですか?

「ディスプレイをオープンできない」ってエラー自体はちょっと不明ですが……。
# GNOME入っていて、CUIで起動していたらそうなりますかね…。

この回答への補足

回答ありがとうございます.
うっかりしてそのままコピーしていれてしまいました.

# gnome-terminal -e "ssh 192.168.2.6 'cd ビデオ;ls > ../aa.txt'"
引数を解析できませんでした: ディスプレイをオープンできません:
[root@prime ~]#

と接続しましたが
cd ビデオ
は実行されません.

大変失礼しました.

補足日時:2013/04/22 15:42
    • good
    • 0

>ウィンドウ内には何も表示されずにリモートPCに接続しないようです.



そもそも…
ssh 192.168.2.6
で接続できるんですか?
シェルプロンプトが表示される状態まで…。

なんか、既に最初の質問から内容変わっているような気がしないでもないですが…。
# 新たにgnome-terminalを開かないとならないのか?というのも含めて。

この回答への補足

4度もの回答ありがとうございます.

sshは正常に接続されています.

# ssh 192.168.2.6
Last login: Mon Apr 22 14:15:28 2013 from 192.168.2.7
[root@prime ~]#

マシンの差かもしれません.
因みに自作マシンは

cpu:fx8120
mother board:ASRock 880GM-LE FX(880G AM3+ mATX DR3)
memory:4GB+4GB
os:fedora14

です.

補足日時:2013/04/22 14:23
    • good
    • 0

>端末タイトルのウィンドウは開きますが


>ウィンドウ内には何も表示されずにリモートPCに接続しないようです.

こちらで試した時にはリモートに接続できましたけどね。
サーバ/クライアントともにVMware環境。CentOS6.4のクライアントからUbuntu Serverのサーバへ接続。
公開鍵認証にしていなかったので、パスワード入力を要求されましたけどね。
# ユーザー名はどちらにも共通で存在するユーザー名になってます。

gnome-terminal -e "ssh 192.168.61.131 'cd vmware-tools-distrib;ls > ../aa.txt'"
で、接続先サーバのホームディレクトリにaa.txtが作成されています。
# リダイレクトしないと一瞬で閉じられたので……。

この回答への補足

回答ありがとうございます.

# gnome-terminal -e "ssh 192.168.61.131 'cd vmware-tools-distrib;ls > ../aa.txt'"
引数を解析できませんでした: ディスプレイをオープンできません:
#

となりダメでした.
先ほどの状態が再現できずに
引数を解析できませんでした: ディスプレイをオープンできません:
が出ているので困っています.

補足日時:2013/04/22 13:45
    • good
    • 0

># gnome-terminal -e "sh -c 'ssh 192.168.2.6 \'cd ビデオ;exec bash\''"


>引数を解析できませんでした: "--command/-e" への引数が正しいコマンドではありません: ' に対応する引用記号の前でテキストが終了しています (テキストは 'sh -c 'ssh 192.168.2.6 \'cd ビデオ;exec bash\''')

ならば…
gnome-terminal -e "ssh 192.168.2.6 'cd ビデオ;exec bash'"
でどうでしょう?
わざわざsh起動しなくても、gnome-terminal起動した時点でログインシェルが起動しているでしょうし。
実行したいのはあくまでsshでしょう。
    • good
    • 0
この回答へのお礼

再回答ありがとうございます.
ご提案の方法を試したところ
端末タイトルのウィンドウは開きますが
ウィンドウ内には何も表示されずにリモートPCに接続しないようです.

お礼日時:2013/04/22 10:18

とりあえず、man ssh辺りを。


sshで接続したリモート側でコマンドを実行させる方法について調べられるはずです。
「ssh コマンド リモート実行」で検索すれば
http://itpro.nikkeibp.co.jp/article/COLUMN/20060 …
ってページも見つかると思いますけどね。

># gnome-terminal -e "sh -c 'ssh 192.168.2.6;cd ビデオ;exec bash'"

sshコマンドで192.168.2.6に接続します。
そこでリモート側は終了でしょう。
で、"cd ビデオ;exec bash"は、当然ローカルで実行されます。
# ssh接続が切れないと続きのコマンドが処理されないような気がしますが、そこのところどうなんですかね?

というか……
>192.168.2.6のPCの/root
>のディレクトリに移動してしまい
sshでrootログイン有効とは、なかなか……。
# まぁ、外部からの接続はできないんでしょうけど…。

gnome-terminal -e "sh -c 'ssh 192.168.2.6 \'cd ビデオ;exec bash\''"
とかやってみたらどうです?
# 動作確認はしていませんが。

この回答への補足

素早い回答ありがとうございます.

勿論外部からのアクセスはこのPCはdenyします.

# gnome-terminal -e "sh -c 'ssh 192.168.2.6 \'cd ビデオ;exec bash\''"
引数を解析できませんでした: "--command/-e" への引数が正しいコマンドではありません: ' に対応する引用記号の前でテキストが終了しています (テキストは 'sh -c 'ssh 192.168.2.6 \'cd ビデオ;exec bash\''')
#

となりご提案の方法はうまくいきませんでした.
いろいろ試行錯誤します.

補足日時:2013/04/22 09:34
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!