PR

PHPで外部サーバーにSSH接続&それをcronで実行する方法(phpseclib使用)

スポンサーリンク

以下手順でPHPからSSH接続が可能になる。

スポンサーリンク

PHPで外部サーバにSSH接続する方法

【01】PHPの暗号通信ライブラリphpseclibをダウンロード。

【02】zipファイルを解凍して、接続用のphpファイルを作成(ここではtest.phpとする)。

phpseclibを解凍した後の画面

 

【03】以下をtest.phpにコピペ

include 'Net/SSH2.php';
$ssh = new Net_SSH2('接続先のIPやドメイン');
if (!$ssh->login('ID','パスワード')) {
	exit('ログイン失敗');
}

echo $ssh->exec("コマンド1");
echo $ssh->exec("コマンド2");
echo $ssh->exec("exit");

 

それをcronで実行する方法

で、上記をcronで実行する場合は、Devasなどの置換ツールを用いて、パスを書き換えてあげる必要がある。

具体的な手順としては、test.phpを以下のように変更した後、

# 絶対アドレスの定数化
	define("Z_URL",__DIR__);

include Z_URL.'/Net/SSH2.php';
$ssh = new Net_SSH2('接続先のIPやドメイン');
if (!$ssh->login('ID名','パスワード')) {
	exit('ログイン失敗');
}

echo $ssh->exec("コマンド1");
echo $ssh->exec("コマンド2");<br>echo $ssh->exec("exit");

 

解凍した全ファイルを対象に、以下の一括置換を施す。

include ' → include Z_URL.'/
include_once ' → include_once Z_URL.'/
include_path(' → include_path(Z_URL.'/

で、cronにコマンドを設定する。(以下例だと、毎日1時27分に実行して、日付.logを残す)
(例)27 1 * * * crawler/bin/test.php > /log/`date +\%Y\%m\%d`.log 2>&1

 

以上!

コメント