python稼働中のWebアプリのデータベースに定期的にアクセスしてデータの状態をチェックしたい、でもデータベースには外部から直アクセスできないようになっているので、SSHトンネル経由でないとアクセスできない、という場合。A5:SQLなりpgAdminなり最近のDBアクセスツールは大抵SSH経由でのアクセスに対応しているので、こういったツールを使えばDBに手動アクセスすることができる。フリーの汎用SQL開発ツール/ER図ツール自分で書いたプログラムからSSH経由でDBにアクセスしたい場合は、WindowsならPutty(SSHクライアントソフト)がSSHトンネリング機能を持っているので、PuttyなりCUIツールのplinkなりを立ち上げておくことで割と簡単に実現できる。qiita.com今回紹介するのは、Windows以外のクライアントからアクセスする場合だったり、WindowsだけどPutty立ち上げるのめんどくさい、という場合にPythonプログラムでSSHトンネリングを実現する方法。sshtunnelパッケージを使うPythonでSSH/SCPクライアント機能を実現するためのパッケージとして、paramikoという(知らなかったけど)有名なパッケージがある。github.comparamikoでSSHトンネリングが実現できないかと調べてみたけどよく分からなかったので、他の選択肢を探していたら、paramikoの機能を使ってSSHトンネリング機能を提供するsshtunnelというパッケージにたどり着いた。sshtunnelトンネルの開き方はファイルを開く方法と似ていて、open-closeとwithブロックのどちらにも対応している。今回は好みのwithブロック版で試した。open-close版(実際のメソッド名はstart-stop)のサンプルも上記のGithubページに記載されているので、そちらをご参照ください。「server.local_bind_port」でトンネリング用に確保されたローカルポート番号を取得できるSSHトンネル接続中は、「localhost」の「server.local_bind_port」経由でremote_bind_addressで指定したリモートのDBサーバなりWebサーバなりにアクセスできる。5432)と指定する。SQLAlchemyでリモートDBサーバにアクセスするなら下記のようなコードでアクセスできる。DB処理おわりスクリプト単独でSSHトンネリングしやすくなることで、リモートDBへのアクセスだけでなく、Apacheの裏側で動いているアプリケーションサーバに直アクセスするとか、リモート環境のテストやチェックが楽になるかも。...2018-08-17node.jsでWebスクレイピングして取得データを保存するnode.jsでデータ収集のためのWebスクレイピングを行う。はてなブログProおいしいものを食べてぐーたらすることしか考えていない、2児の父。noteにもエッセイを載せてます。Versionnoteはてなブログをはじめよう!piro_sukeさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。