public function Exec($command, $stdin = '')
{
$database = $this->session->getDatabase();
$name = $database['name'];
$engine = $this->session->getSpoolerByName($name, 'waae');
if (!isset($engine[0]['shell'])) {
print "?!";
exit;
}
set_include_path('../vendor/phpseclib' . PATH_SEPARATOR . get_include_path());
include 'Net/SSH2.php';
include 'Crypt/RSA.php';
$shell = $engine[0]['shell'];
$host = $shell['host'];
$user = $shell['user'];
$ssh = new \Net_SSH2($host);
if (isset($shell['key'])) {
$key = new \Crypt_RSA();
$ret = $key->loadKey($shell['key']);
if (!$ret) {
echo "loadKey failed\n";
print "<pre>" . $ssh->getLog() . '</pre>';
exit;
}
} elseif (isset($shell['password'])) {
$key = $shell['password'];
} else {
$key = '';
// ?! possible ?
}
if (!$ssh->login('autosys', $key)) {
print 'Login Failed';
print "<pre>" . $ssh->getLog() . '</pre>';
exit;
}
if ($stdin == '') {
return $ssh->exec(". ~/.bash_profile;{$command}");
}
// Test STDIN
$ssh->enablePTY();
print "profile" . $ssh->exec(". ~/.bash_profile");
print "sort" . ($exec = $ssh->exec('sort'));
$ssh->write(<<<EOF
echo "update_job: SE.ERIC.JOB.JobType_UNIX"
echo "description: 'ok!!'
EOF
);
$ssh->reset(true);
$ssh->setTimeout(2);
print $ssh->read();
return;
return $ssh->read();
// outputs the echo above
}