====== 40 Laravel SSH/SCP ======
===== 設定ファイル =====
'connections' => [
'production' => [
'host' => '10.11.10.11',
'username' => 'hogehoge',
'password' => 'hogepassword',
'key' => '',
'keytext' => '',
'keyphrase' => '',
'agent' => '',
'timeout' => 10,
],
],
==== 直前に指定する方法 ====
Config::set('remote.connections.production.host', 'XXX.XXX.XXX.XXX');
Config::set('remote.connections.production.username', 'XXXXXX');
Config::set('remote.connections.production.password', 'XXXXXXXX');
SSH::into('production')->run(array(
'cd /home/taro',
'touch aloha',
));
===== 標準出力を変数に入れる方法 =====
[[https://qiita.com/tricogimmick/items/3e344486658e3cfbd407|クロージャー]]
標準出力に規定のバイト数以上の出力が格納される場合、クロージャ内の処理が複数回実行されてしまう罠もあるらしい
[[https://sharediary.net/2019/05/11/sshruncommand-functionoutput%E3%81%AE%E7%BD%A0/]]
これだとクロージャー内なので、$outputには何も入りません。
$output = ''
\SSH::into('production')->run(array(
'hostname',
'uptime',
),function($line){
$output .= $line;
});
==== 対策 ====
下記のようにuseで変数を使うと、標準出力を変数に入れる事ができます。
$output = ''
\SSH::into('production')->run(array(
'hostname',
'uptime',
),function($line) use(&$output){
$output .= $line;
});
{{tag>Laravel}}