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

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

新規登録して質問してみよう
ただいま回答率
85.48%
SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

Q&A

解決済

2回答

8641閲覧

SSHで接続してGUIプログラムを実行すると手元で起動してしまう

hogegorou

総合スコア11

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

0グッド

2クリップ

投稿2016/10/24 11:39

編集2016/10/25 02:54

###前提・実現したいこと
現在ConoHaでサーバを借り、Ubuntu16.04をGUIで動かしています。この端末を使い、ブラウザを自動的に操作する(クローリングする)プログラムを実行しようと考えています。
また、何らかの不具合により動作が終了した時にスマートフォンからSSHで接続しプログラムを再実行するということを行いたいと考えています。

###発生している問題
実際にConoHaのコンソール画面(VNC)でGUIを操作しプログラムを実行した際は正常に動作するのですが、手元の端末からSSHで接続し、プログラムを実行した際はエラー(後述)が出て正常に動いてくれません。

SSH接続をする際に-Yのオプションをつければ、プログラムを実行することができますが、ブラウザの画面が手元の端末で実行してしまいます。これをConoHaの端末側で実行するすべはないでしょうか?

よろしくお願いします。

###補足情報

  • 実行したいプログラムはPythonで書かれていて、Seleniumをつかってブラウザ操作を行っています。
  • -Yオプションを使わないで実行した時のエラーは以下のとおりです。
Message: unknown error: Chrome failed to start: exited abnormally (Driver info: chromedriver=2.24.417424 (c5c5ea873213ee72e3d0929b47482681555340c3),platform=Linux 4.4.0-45-generic x86_64) Traceback (most recent call last): File "main.py", line 51, in <module> b1 = webdriver.Chrome('./chromedriver') File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/chrome/webdriver.py", line 69, in __init__ desired_capabilities=desired_capabilities) File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/webdriver.py", line 92, in __init__ self.start_session(desired_capabilities, browser_profile) File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/webdriver.py", line 179, in start_session response = self.execute(Command.NEW_SESSION, capabilities) File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/webdriver.py", line 236, in execute self.error_handler.check_response(response) File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/errorhandler.py", line 192, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally (Driver info: chromedriver=2.24.417424 (c5c5ea873213ee72e3d0929b47482681555340c3),platform=Linux 4.4.0-45-generic x86_64)
  • ConoHa上のUbuntuをGUIに対応させた方法はこちらのサイトを参考にしました。
  • SSHで接続している手元の端末はUbuntu16.04です。

追記

  • SSHで手元の端末からConoHaの端末に接続した状態で”printenv DISPLAY”を行うと何も出力されませんでした。ちなみに、ConoHaのコンソールで同様のコマンドを実行すると「:0」と帰ってきました。
  • 普段SSH接続を行う際のコマンドは以下のとおりです。
$ ssh -i [カギのパス] [ユーザ名]@[ConoHa側のIPアドレス]

「発生している問題」で触れました"-Y"のオプションをつけた時のコマンドは以下のとおりです。また、この"-Y"の部分を"-X"に変えても結果は同じでした。

$ ssh -i [カギのパス] [ユーザ名]@[ConoHa側のIPアドレス] -Y

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

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

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

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

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

otn

2016/10/24 12:44

ssh接続した状態で、環境変数DISPLAYはどうなっていますか?
hogegorou

2016/10/24 12:55

”printenv DISPLAY”のコマンドを試しましたが、何も出力されませんでした…。
nagaetty

2016/10/25 02:06

ConoHaでsshで接続して起動されたコマンドは、どのような文字列でしょうか?
guest

回答2

0

ベストアンサー

GUI のディスプレイ番号を調べてください。
GUI 上の端末(ターミナルエミュレーター)で echo $DISPLAY を実行すると、:0 とか :1 とかが表示されると思います。

SSH でログインした先で、上記と同じ DISPLAY 環境変数を設定した後、コマンドを起動します。

bash

1$ export DISPLAY=:0 2$ (プログラム実行)

GUI の実行ユーザーと SSH のログインユーザーが一緒である必要があります。
違う場合、GUI 上の端末で xauth list でキーを確認し、SSH のログインユーザーで xauth add ... を実行してキーを登録する必要があります。

投稿2016/10/25 03:12

TaichiYanagiya

総合スコア12146

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

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

0

SSHでログインされた後で、

startx -display localhost:0 & python Seleniumをコントロールする.py kill %1

でご確認ください。

投稿2016/10/25 03:23

nagaetty

総合スコア1106

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問