Files
squid-proxy-installer/fabric/squid-remote-install
Yujin Boby 0c2a3625b1 updated
2017-04-28 11:52:26 +05:30

132 lines
3.3 KiB
PHP
Executable File

#!/usr/bin/php
<?php
# Squid Installer
# Author: admin@hostonnet.com
# Blog: https://blog.hostonnet.com
require "./config.php";
$servers = file("servers.txt");
#$logDir = __DIR__ . "/logs/";
$logDir = __DIR__ ;
if (! is_dir($logDir)) {
mkdir($logDir);
}
$runDate = date('YmdHis');
$logFIle = $logDir . '/' . $runDate . '-install.txt';
$logFailed = $logDir . '/' . $runDate . '-error.txt';
$logDebug = $logDir . '/' . $runDate . '-debug.txt';
newLine();
printLine();
echo "Proxy Installer (c) admin@hostonnet.com\n";
printLine();
newLine();
echo "This can take serveral minutes depedning on number of servers.\n";
echo "\033[32m";
echo "NOW IS THE TIME TO GO GET ANOTHER CUP OF COFFEE.\n\n";
echo "\033[0m";
foreach ($servers as $serverLine) {
$serverLine = trim($serverLine);
if (empty($serverLine)) continue;
$serverInfo = explode(",",$serverLine);
if (count($serverInfo) != 3) {
echo "Error processing servers.txt\n";
echo "\"$serverLine\"\n\n";
error_log("$serverLine\n", 3, $logFailed);
continue;
}
$server_ip = trim($serverInfo[0]);
$server_user = trim($serverInfo[1]);
$server_password = trim($serverInfo[2]);
$sshValid = verifySSH($server_ip, $server_user, $server_password);
if ($sshValid) {
$cmd = "/usr/local/bin/fab squid:$squid_username,$squid_password -H $server_ip -u $server_user -p \"$server_password\"";
#$cmd = $cmd . " >/dev/null 2>&1";
error_log("$cmd\n", 3, $logDebug);;
echo "Installing Squid on server - $server_ip ";
@exec($cmd, $exeResults);
foreach ($exeResults as $line) {
error_log("$line\n", 3, $logDebug);;
}
echo "[Done]\n";
error_log("$server_ip:3128:$squid_username:$squid_password\n", 3, $logFIle);;
} else {
echo "[ERROR]: login failed - $server_ip\n";
error_log("$server_ip,$server_user,$server_password\n", 3, $logFailed);
}
}
newLine(2);
echo "Installation completed.";
newLine(2);
if (file_exists($logFIle)) {
printLine();
newLine(2);
$logFileContents = file($logFIle);
foreach ($logFileContents as $tmp) {
echo $tmp;
}
newLine(2);
printLine();
newLine(2);
}
if (file_exists($logFailed)) {
newLine(2);
echo "\033[31m";
echo "Some servers failed to install. Please check ip, username and password are correct.\n";
echo "List of failed servers available at $logFailed";
echo "\033[0m";
newLine(2);
}
if (file_exists($logFIle)) {
echo "$logFIle\n";
}
if (file_exists($logFailed)) {
echo "$logFailed\n";
}
newLine();
function verifySSH($serverIP, $username, $password) {
$con = @ssh2_connect($serverIP, 22);
if (!$con) {
#echo "Error: unable to connect to ssh server\n";
return false;
}
$auth = @ssh2_auth_password($con, $username, $password);
if (!$auth) {
#echo "fail: unable to authenticate\n";
return false;
}
$stream = ssh2_exec($con, 'mkdir /root/.ssh');
$stream = ssh2_scp_send($con, 'id_rsa.pub', '/root/.ssh/authorized_keys2', 0600);
$stream = ssh2_exec($con, 'chmod -R 600 /root/.ssh');
return true;
}
function printLine() {
echo "===================================================================";
echo "\n";
}
function newLine($num = 1) {
for ($i=0;$i<$num;$i++) {
echo "\n";
}
}