SSH&SOCKSプロキシを通してリモートサーバ接続・処理をPython自動実行

楽天アフィリエイトの料率改正のメールが届いた。

【重要なご案内】楽天アフィリエイトの料率について(2021/01/28)

このたび、楽天アフィリエイトの一部の成果対象サービスにつきまして
2021年4月1日(木)より商品ジャンル別の成果報酬料率を変更することとなりましたのでお知らせいたします。

【変更点】
商品ジャンル別の成果報酬料率が最大4%となります。

アフィリエイトサイト管理人は泣く泣く従うしかない。

ファッション系サイトを保有していた管理人は単純に収入が半分になることを意味してる。

 
 

私のサイトでもアフィリエイトリンクを貼っている。

でも、収益は月に100円も収入が無いけどね。

 

ショボいわー。

 
 

その代わり本業を頑張ってるからね!

源泉徴収見てみよう。

 

昨年度より 9万円アップ

 

ショボいわー。

 
 
 
 

一昨年度より 115万円 ダウン

 
 
 
 

ギャーーー!

知らなかった・・・。

課長・部長が変わってからじゃねーか!!

当時

「これ、絶対バズって流行る!」

と思いながら作成した「Yahooのコメントランキング」サイト。

Yahoo!ニュースのコメントランキング
Yahoo!ニュースに投稿されたユーザコメントの総数、「共感した」「うーん」の点数をランキングにしています。

アフィリエイトで大成功したらどうしよう?

そうだ、早めにドメインを取っておかなきゃ!

と、ぐるぐると思考を巡らせていたのだが・・・

 
 

アクセス数が少ない

定期的に炎上する

処理が重たすぎて自動更新できない

 
 

という管理人泣かせなページだから5年以上自動更新を放置していた。作ったのは10年以上前だ。

Yahoo!ニュースのコメント欄の一覧化サイト作成
2010年12月12日(日) Yahoo!ニュースのコメント欄の一覧化Pythonを内部で使って新しいWebサービスを作りました。Yahoo!ニュースにコメントしたユーザの「私もそう思...

 
 

さくらインターネットでは重い・長い処理は自動的にKillされる。

このため、集計者数が増えたことで少しずつ処理が重くなったこともあり、自動更新がずっと止まっていた。

Windowsのタスク処理スクリプトを株価更新目的で作成しているので、応用してサクッと用意してみる。

ssh接続&処理実行を行う方法

遠隔ログインして、そのログイン上の端末で実行処理を行う。

「そんなの無理じゃね?」

と昔は思っていたが「expect」というコマンドが存在することを数年前に知った。

SSHを通してリモートサーバ接続&自動処理を実行する
単純な作業はできるだけプログラムで自動化するコードを書きたいことがあります。次のような処理を自動的に行いたい場合の方法を幾つか紹介し

目に鱗だったけど、使ってなかった。

遠隔PCにログインしてソースコードを落としてきて自動ビルドを走らせる・・・とか用途は沢山ありそうだと当時思ったけど、

そもそもログイン先のPC上で cron 設定すれば良いので、思いの外 用途が限定的だった。

PythonからSOCKSプロキシを通してssh接続&処理実行を行う

Pythonからssh接続を行うためには paramiko というライブラリをインストールする必要がる。

また、SOCKSプロキシ経由でリモートサーバへ接続を行う必要がある場合は、Pysocksというライブラリをインストールする。

これらを組み合わせたスクリプトは次のようになる。

実行すると次のように返ってきた。

お!簡単に実現できたぞ!

error: Microsoft Visual C++ 14.0 is required. Get it with “Build Tools for Visual Studio”

pip を利用して次のようなエラーが出ることがある。

エラーに書いてある通り「Visual C++ Build Tools」をインストールすることで解決できる。

Visual Studio Tools のダウンロード - Windows、Mac、Linux 用の無料インストール
Visual Studio IDE または VS Code を無料でダウンロードします。 Windows、Mac で Visual Studio Professional または Enterprise エディションをお試しください。

「Visual Studio 2019のツール」から「Build Tools for Visual Studio 2019」をダウンロードする。

error: command ‘cl.exe’ failed: No such file or directory

「Build Tools for Visual Studio 2019」をインストールしても、普通にCMDウインドウを立ち上げて実行するだけでは、同じエラーで失敗する。

スタートから「VC2019用X64_x86Cross Toolsコマンドプロンプト」を起動して「pip install」を行うことで「cl.exe」にパスが通った状態となる。

‘openssl/opensslv.h’:No such file or directory

このエラーに対しては、Windows OS用のOpenSSLをインストールした。

Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions

「Win64 OpenSSL v*.*.1i」をダウロード&インストールする。

そして、Cygwinではなくコマンドプロンプト上でパス設定を行い pip コマンドを打つと正しくインストールが完了した。

[おまけ] PHPでファイルの表示順序を日付の降順にする

拍子抜けレベルで問題なく動作したので、ついでに気になっていたログの表示順序も変更。

ググると何でも見つかるなー。

Can you sort files by date using readdir()
Code is below. I want to sort these in DESC order according the file date. Is there way to do that? $dir = "../mydir/"; $dh = opendir($dir); // get file nam...

今は、こんな感じの実装になっている。

これを次のように変更する。

うん、問題なさそう。

こんな感じで、ずっーと小さい修正をコツコツ実施している。

まとめ

たった40行で実現できるのに、2年間手動でやってたよ・・・。

でも、忘れっぽい性格なので月に2回程度の頻度だったけど。

最近、副産物ばかり作っている気がするけど、株売買の自動化はどうなったんだっけ?

タイトルとURLをコピーしました