情報科学屋さんを目指す人のメモ(FC2ブログ版)

何かのやり方や、問題の解決方法をどんどんメモするブログ。そんな大学院生の活動「キャッシュ」に誰かがヒットしてくれることを祈って。

ブログ内検索

スポンサーサイト このエントリーを含むはてなブックマーク

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 | 編集

Subclipseのsvn+ssh利用時のポート番号について このエントリーを含むはてなブックマーク

なんかSubclipseでsvn+sshを利用するとき、ポート番号を指定しても意味がないというか反映されていないようなので報告メモ

Subclipseでポート番号を指定してみる

Subclipseでsvn+sshを利用するときに、ポート番号(port)を

svn+ssh://username@hostname:port/repos/myrepos
のようにして、ポート番号の指定をしてみました。ただ、そのポート番号の様子がおかしい。

ポート番号にどんな番号を指定しても、常にSSHのデフォルトである22番ポートを使っているような気がしてきたので、Wiresharkで調べてみると、確かにどんな番号を指定しても22番ポートを利用しています。なので、

svn+ssh://username@hostname:10000000000/repos/myrepos
なんていう無茶な設定から
svn+ssh://username@hostname:99/repos/myrepos
なんていう微妙な設定まで、どう設定しようと22番ポートを利用しているようなのです。

Subclipseのソースコードをちょっと読んでみた

Subclipse自体のソースコードをチェックしてみたところ、URLのパース自体はちゃんとやっているみたい。ただ、それ以上どのタイミングでポート番号を指定して利用しているかがちょとすぐには見つからないのではっきりしません。すいません。

ポート指定方法はあるけれど

Subclipseの設定ファイルを利用して、ポート番号を指定することは確かにできるみたいなのですが、レポジトリごとの設定ができない模様。不便すぎる。

まさか

実は上記のポート番号の指定方法が間違っているのかもしれないんですけど、とりあえず、適当に入力しても何のエラーにもならないのは問題かと。とりあえず、もうちょっと調べてみようかな。

Subversion実践入門
実用SSH
Eclipse 実践開発入門

スポンサーサイト
Subversion | コメント:0 | トラックバック:0 | 編集

SNMPとSRVLOCプロトコルがWiresharkでたくさん検出されるときの対策 このエントリーを含むはてなブックマーク

Wiresharkでとある通信を調べようとしたとき、今まで気にならなかったSNMPとSRVLOCプロトコルの通信が大量に発生していて、通信ログがとても見にくかったので、フィルタを使った対策法をメモ。

SNMPとSRVLOCとは

SNMPは、

SNMP
DARPAモデルに準じたIP ネットワーク上のネットワーク機器を監視(モニタリング)・制御するための情報の通信方法を定めるプロトコルである。
(Wikipediaより)
SRVLOCは、
SRVLOC
It provides automatic client configuration for applications and advertisement for network services.
(Service Location Protocol Projectより)
だそうです。

犯人はプリンタ

その2プロトコルの通信先を調べてみると、ネットワークプリンタでした。仮に、そのプリンタのIPアドレスを192.168.1.100とします。

Wiresharkで特定プロトコルを表示しないようにする方法

まず、Filterを利用してSNMPとSRVLOCプロトコルだけを表示にするには、キャプチャ画面のFilter蘭に

snmp or srvloc
と入力して「Apply」をクリックすればOK。

じゃぁ、逆にSNMPとSRVLOCプロトコルだけを非表示にするにはどうすればよいかというと、Filter蘭に、

!(snmp or srvloc)
または
!snmp and !srvloc
と入力すればOK。

Wiresharkで特定IPアドレスとの通信を表示しないようにする方法

たとえば、192.168.1.1からの通信のみを表示する場合は

ip.src == 192.168.1.1
192.168.1.1への通信のみを表示する場合は
ip.dst == 192.168.1.1
192.168.1.1との通信のみを表示する場合は
ip.addr == 192.168.1.1

では、それらの否定をどうすればいかというと、それぞれ以下のように「!( )」で囲めばOKです。

!(ip.src == 192.168.1.1)
!(ip.dst == 192.168.1.1)
!(ip.addr == 192.168.1.1)
こうすることで、それぞれ、192.168.1.1からの通信を表示しない、192.168.1.1への通信を表示しない、192.168.1.1との通信を表示しないという設定になります。また、上の二つは
ip.src != 192.168.1.1
ip.dst != 192.168.1.1
としても同じです。ただ、ここで注意なのですが
ip.addr != 192.168.1.1
は、!(ip.addr == 192.168.1.1)と同じ意味にはならず、通信元・通信先の両方が192.168.1.1の通信を表示しないという設定になってしまいます。これではだめです。

以上より、今回は、

!(ip.addr == 192.168.1.100(プリンタのIPアドレス)
とすればよいことになります。

まとめ

まとめというかポイントは、ip.addr != 192.168.1.1とやってしまわないことです。ほとんど素通りになってしまいます。!(ip.addr == 192.168.1.1)にしましょう。

パケットキャプチャ入門―LANアナライザWireshark活用術
Wiresharkパケット解析リファレンス
実践 パケット解析 ―Wiresharkを使ったトラブルシューティング

ネットワーク | コメント:0 | トラックバック:0 | 編集

svnコマンドをSubclipseで実行しチェックアウトする このエントリーを含むはてなブックマーク

オープンソースソフトウェアは、ソースコードのダウンロード方法として、コマンドラインだけ提示されていることがあります。今回は、そういう場合にコマンドラインを使わず、Subclipseを利用してソースコードをダウンロードしてみます。

SubclipseをSubclipseでチェックアウトしよう

EclipseプラグインSubclipseのソースコードを、まさにそれ自体であるSubclipseでチェックアウトしてみます。

コマンドラインによるチェックアウト方法は書いてある

Subclipseの公式ページには、ソースコードをチェックアウトする方法として、

svn checkout http://subclipse.tigris.org/svn/subclipse/trunk subclipse --username guest
というコマンドが提示されています。これは、コマンドラインを利用する場合の方法です。このコマンドによって、guestユーザの権限で、subclipseというディレクトリにtrunkフォルダ内のソースコードがチェックアウトされます。

ただ、Subclipseに直接このようなコマンドを入力することはできません。また、Subclipseに限らず、このようにコマンドラインでのチェックアウト方法だけが書いてあることは多々あります

Subclipseでチェックアウトする

まず、パッケージエクスプローラ(Package Explorer)上の何もないところで右クリックをして、「Import...(インポート)」を選択しますEclipseを日本語化していないので、日本語表記は怪しいです。日本語化している人の方が少数派ですよね。。。

続いて、表示された選択肢の中から、「SVN>SVNからプロジェクトをチェックアウト」を選択し、「Next>」をクリックします。

ロケーションの選択/生成画面が表示されたら、「新規レポジトリー・ロケーションを生成」を選択して「Next>」をクリックします。

次は、ロケーションを求められます。ここでは、ロケーションとして、

svn://guest@subclipse.tigris.org/svn/subclipse/trunk
なんかに勝手にしないことです。なんとなく、「subversionだから、svn://とかあったよな」という考えでこのようにしてはいけません。なぜなら、svn://は、svnサーバが提供されている場合しか使えず、あくまでhttp://でアクセスしろと言うことなので、余計なことはしてはいけないからです。じゃぁ、どうすればいいかというと、ここは普通に
http://subclipse.tigris.org/svn/subclipse/trunk
と入力してください。入力後、「Next>」をクリックします。

続いて、「ユーザ名とパスワードの入力」画面が表示されるので、

ユーザ名:guest
パスワード:<何も入力しない!>
とします。パスワードを保存しても何も困らないので、「パスワードを保存する」にチェックを入れておくといいかもしれません。入力後、「OK」です。

すると、以下のようにチェックアウトするフォルダの候補がずらっと表示されます。

subclipse
subclipse_mylyn
subclipse_mylyn3
svnClientAdapter
svnant
www
ここで、チェックアウトしたいプロジェクトのフォルダを選択して「Next>」です。普通は「subclipse」ですね。

すると、「チェックアウトの方法とリビジョンの選択」画面が表示されます。

フォルダ subclipse をチェックアウトする方法を選択してください
  • 新規プロジェクトウィザードを使ってプロジェクトとしてチェックアウト
  • プロジェクトとしてワークスペースへチェックアウト
では、「プロジェクトとしてワークスペースへチェックアウト」が選べる場合は選んでしまった方が楽です。 また、
Check out HEAD revision
にチェックを入れることで、最新版がチェックアウトされます。通常、チェックを入れたままにしましょう。

残りのオプションですが、「Depth」は、「Fully recursive」を選択してください。Fully recursive以外だと、すべてのファイルがチェックアウトされません。また、「Ignore externals」にチェックを入れると、外部参照を無視してしまいます。普通はチェックを入れてください。「Allow unversioned obstructions」にチェックを入れないと、ローカルフォルダにたまたまあったバージョン管理されていないファイルと衝突した場合、チェックアウトがキャンセルされます。これはそのままでいいと思います。 以上の入力が完了したら「Next>」。

最後に「プロジェクトのロケーション選択」画面が表示されるので、必要に応じてワークスペースを選択してください。選択したら、いよいよ「Finish」です。

Javaプロジェクトとしてチェックアウトしたい

Javaプロジェクトとしてチェックアウトしたい場合など、プロジェクトのタイプを指定したい場合は、

フォルダ subclipse をチェックアウトする方法を選択してください
  • 新規プロジェクトウィザードを使ってプロジェクトとしてチェックアウト
  • プロジェクトとしてワークスペースへチェックアウト
で「新規プロジェクトウィザードを使ってプロジェクトとしてチェックアウト」を選択してください。直後の画面で、「Java>Java Project」を選択してください。ほかにもいろいろありますが、適切なものを選択してくださいここでまた「SVN>SVNからプロジェクトをチェックアウト」にしてしまうと、無限ループが始まってしまうので注意

ちなみに、Subclipseをチェックアウトするなら「Plug-in Project」でいいんでしょうかね。

おわり

以上でチェックアウト終了です。

追記:Subclipseをチェックアウトするとき

チェックアウトをプロジェクトごとに行うなら、「/trunk/subclipse」ではなく一つ深い階層のたとえば「/trunk/subclipse/org.tigris.subversion.subclipse.core」を選択して「プロジェクトとしてワークスペースへチェックアウト」をチェックしてチェックアウトしてください。すると、.projectファイルがあるので、正しくチェックアウトできます。

Subversion実践入門
実用SSH
Eclipse 実践開発入門

Subversion | コメント:0 | トラックバック:0 | 編集

Eclipseでsvn+sshを行う方法メモ2 エラー対策編 このエントリーを含むはてなブックマーク

前掲の記事「Eclipseでsvn+sshを行う方法(Putty+Subclipse@Windows)メモ」の実行中に発生するかもしれないエラーについて、その現象と対策をメモしておきます。

対象環境

前回より詳しく私の利用している環境を記しておきます。

サーバ
OS:Cent OS 5.3 (Final) 64bit
カーネル:Linux 2.6.18-128.el5
CPU:x86_64

クライアントPC
OS:Windows Vista Ultimate SP2 32bit
Eclipse: Eclipse Java EE IDE for Web Developers. Build id: 20090920-1017 (英語)
Subclipse: Subclipse 1.6.5
PuTTY: PuTTY Release 0.60-JP_Y-2007-08-06

エラーとその対策法

以下、Eclipseでロケーションを作成しようとして発生したエラーと、その原因について紹介します。

Permission denied エラー

Error while creating module: org.tigris.subversion.javahl.ClientException: Permission denied.
svn: ディレクトリ '/repos/myrepos/db/transactions/0-1.txn' を作成できません: 許可がありません
というエラーが発生した場合、レポジトリのパーミッションの設定がおかしなことになっている可能性があります。普通にSSHサーバにログインして、レポジトリのあるフォルダに書き込みができるかどうか確認してください。

Network connection closed unexpectedly エラー

plink.exeのコマンドプロンプト画面(黒い画面)が一定時間表示された後、

検証不能
ロケーションの検証中にエラー: "org.tigris.subversion.javahl.ClientException: Network connection closed unexpectedly
と表示される場合、ホスト名が間違っている可能性が高いです。確認してください。

Couldn't find a repository エラー

plink.exeのコマンドプロンプト画面(黒い画面)が短く表示された後、

検証不能
ロケーションの検証中にエラー: "org.tigris.subversion.javahl.ClientException: Couldn't find a repository
と表示される場合、レポジトリのURL(hostname以降)がレポジトリの位置を正しく指定できていない可能性があります。hostname以降は、サーバ内部での絶対パスで指定します。homeディレクトリからなどではありません。確認してみてください。前回の記事であげた例(/repos/myrepos)も参考にしてください。

黒い画面のまま固まるエラー

plink.exeのコマンドプロンプト画面(黒い画面)が表示されっぱなしになり、一切画面が変化しなくなってしまう状態になった場合、接続先サーバ側の鍵がレジストリにキャッシュされていない可能性があります。一度putty.exeで接続先サーバにSSH接続を行い、サーバ側の鍵を保存するかどうかと言う質問に対して「はい」と答えてください。そうすることで、サーバ側の鍵のキャッシュが保存されます。

最後に

ありがちなエラーをまとめてみましたが、基本は、それぞれの機能(SSH, Subversion, ...)を一つ一つまずは確認することです。どこが原因になっているかをうまく絞ってみてください。

Subversion実践入門
実用SSH
Eclipse 実践開発入門

Subversion | コメント:0 | トラックバック:0 | 編集

Eclipseでsvn+sshを行う方法(Putty+Subclipse@Windows)メモ このエントリーを含むはてなブックマーク

Eclipseでsvn+ssh(SSH接続を介したSubversionの利用)を行う方法について、おおざっぱなメモをしておきます

対象環境

今回の対象環境は、Windowsで、Eclipseを使用します。Eclipse用SubversionプラグインとしてSubclipseを利用し、Windows用SSHクライアントとしてPuttyを利用します。

手順概要

  1. 環境変数(ユーザ環境変数)に、変数SVN_SSHを追加して、値をPuttyに含まれるプログラムplink.exeへのフルパスにする。このとき、フォルダの区切りは"\"ではなく、"/"(スラッシュ)を利用すること。以下、例を示す。

    変数:SVN_SSH
    値:D:/putty/plink.exe

  2. putty.exeでいったんサーバにSSH経由でログインを試みる。初回ログイン時、

    ---------------------------
    PuTTY セキュリティ警告
    ---------------------------
    このサーバの鍵はレジストリにキャッシュされていません。
    このサーバがあなたの期待するコンピューターである
    という保証はありません。
    
    このサーバのrsa2鍵の指紋は次の通りです:
    ssh-rsa 2048 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    
    このホストを信用するのであれば、「はい」を押して
    PuTTYのキャッシュに鍵を追加し接続してください。
    
    キャッシュには追加せずに一度だけ接続したいので
    あれば、「いいえ」を押してください。
    
    このホストを信用しないのであれば、「キャンセル」
    を押して接続を破棄してください。
    
    ---------------------------
    はい(Y)   いいえ(N)   キャンセル   ヘルプ   
    ---------------------------
    
    という内容の警告表示されるので、ここで「はい」を選択し、サーバの鍵をレジストリにキャッシュします。

  3. subversionレポジトリをサーバで作成しておく。/reposディレクトリにレポジトリを作成し、SSHログインするユーザ名をusername、レポジトリへのアクセスを許可するユーザグループをsvnusersとする場合、コマンドは

    ■usernameをsvnusersグループへ
    #groupadd svnusers
    #/usr/sbin/usermod -G svnusers username
    
    ■レポジトリ作成
    #mkdir /repos
    #svnadmin create /repos/myrepos
    
    ■パーミッション設定
    #chmod -R 775 /repos/myrepos
    #chown -R root:svnusers /repos/myrepos
    となる。

  4. EclipseにSubclipseをインストール
  5. 「ウィンドウ>設定>チーム>SVN」のSVNインターフェースで、JavaHLが選択されていることを確認。SVNKit(Pure Java)などになっていた場合は、JavaHLに変更する。

  6. puttyに含まれるpagent.exeを起動し、タスクトレイのアイコン右クリックから「鍵の追加」からPutty用秘密鍵ファイル(*.ppk)を登録し、要求されたパスフレーズを入力。

  7. レポジトリをEclipseに登録する。具体的には、いくつか方法があり、

    • ファイル>インポート>Select an import source>SVN>SVNからプロジェクトをチェックアウト
    • プロジェクトを右クリック>チーム>Share Project...>SVN
    • レポジトリエクスプローラで右クリック>新規>レポジトリロケーション
    などがありますが、どの方法でも、新規にレポジトリロケーションを作成することになります。レポジトリロケーションの作成とは、既存のレポジトリを指定することなのですが、その際URLで指定します。先の例で、ホストのアドレス(IPアドレス)をhostnameとすると、そのURLは
    svn+ssh//username@hostname/repos/myrepos
    となります。URL指定後、うまく読み込むことができれば、Subclipse+Puttyを利用したsvn+ssh環境の構築は成功したことになります。URLに関する参考資料「svn+ssh://の後に続くパスについて

以上で、おおざっぱですが手順終了です。

Subversion実践入門
実用SSH
Eclipse 実践開発入門

Subversion | コメント:0 | トラックバック:0 | 編集
 | HOME |  OLD >>
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。