18. juli 2003 - 19:51
Der er
7 kommentarer og
4 løsninger
Stofanet autologin
Hejsa
Jeg har stofanet, hvor jeg har en linux server stående bag.
Jeg kunne godt tænke mig at få min server til automatisk at gå på nettet, normalt bruger jeg telnet 192.168.30.2 og indtaster selv brugernavn, password og valg.
Er der ikke en måde hvor man kan logge ind uden at skulle indtaste noget feks. telnet 192.168.30.2 259 -ubrugernavn -ppassword -cchois????
At brug 'c' er total overkill arne og alt for besværligt, på Linux bruger man bare script, et php script i dette tilfælde.
gnyff:
Du bruger dette script, jeg starter det under boot, og kalder det hvert andet minut for at oprette forbindelsen hvis den skulle mistes.
Du kan nok selv se hvilke 2 linier du skal rette, den logger data i en /var/log fil så du kan se hvornår den har reconnectet.
#!/usr/bin/php -qC
<?php
$signOnID = "DIT ID";
$signOnPwd = "DIT PASSWORD";
$host = "192.168.30.2";
$port = "259";
$date = date("d-m-Y");
$time = date("H:i");
switch ($_SERVER["argv"][1]) {
case "start":
$cmd = 1;
break;
case "stop":
$cmd = 2;
break;
case "status":
$cmd = 3;
break;
default:
$cmd = 1;
}
function sConnect($con_host,$con_port)
{
$sock = fsockopen ($con_host, $con_port, $errno, $errstr, 10);
if (!$sock){
$eval[0] = False;
$eval[1] = "[$errno] $errstr";
}
else {
$eval[0] = TRUE;
$eval[1] = $sock;
}
return $eval;
}
function sUsr($sock,$usr)
{
fwrite($sock, $usr, strlen($usr));
flush();
}
function sPwd($sock,$pwd)
{
fwrite($sock, $pwd, strlen($pwd));
flush();
}
function sCmd($sock,$cmd)
{
fwrite($sock, "$cmd\r", strlen($cmd));
flush();
}
function sGetMsg($sock,$char,$num,$word)
{
$n = strlen($word);
$n = $n * -1;
for ($i=0; $i<=($num - 1); $i++){
$ans = " ";
while ($ans != $char){
$ans = fread($sock, 1);
$foo .= $ans;
}
}
if (substr($foo, $n) == $word){
$eval = TRUE;
}
else{
$eval = FALSE;
}
return $eval;
}
function sConStat()
{
$fp = fsockopen ("212.10.24.252", 53, $errno, $errstr, 5);
if (!$fp) {
$fp = fsockopen ("212.10.10.4", 53, $errno, $errstr, 5);
if (!$fp) {
$fp = fsockopen ("212.10.10.5", 53, $errno, $errstr, 5);
if (!$fp) {
$eval = FALSE;
}
else {
$eval = TRUE;
fclose($fp);
}
}
else{
$eval = TRUE;
fclose($fp);
}
}
else {
$eval = TRUE;
fclose($fp);
}
return $eval;
}
function writeLog($msg)
{
$fp = fopen ("/var/log/stofaCon.log", "a+");
fwrite($fp, $msg);
flush();
fclose($fp);
}
/**
*
* THE CODE
*
**/
if (!sConStat()){
$socket = sConnect($host, $port);
if ($socket[0]){
if (!sGetMsg($socket[1], ":", 1, "Login:")){
writeLog("[ERROR] $time $date Stofa Server returned an unknown answer\n");
exit;
}
sUsr($socket[1], "".$signOnID."\r");
if (sGetMsg($socket[1], ":", 1, "Login:")){
writeLog("[ERROR] $time $date Stofa Server returned \"User not found\" - Verify SignOn ID\n");
exit;
}
sPwd($socket[1], "".$signOnPwd."\r");
if (sGetMsg($socket[1], ":", 1, "Login:")){
writeLog("[ERROR] $time $date Stofa Server returned \"Bad password\" - Verify Password\n");
exit;
}
sGetMsg($socket[1], ":", 1, "choice:");
sCmd($socket[1], "".$cmd."\r");
if (sGetMsg($socket[1], "\n", 1, "choice:")){
writeLog("[ERROR] $time $date Stofa Server returned \"Not such Choice\" - Verify choice\n");
exit;
}
else{
writeLog("[INFO] $time $date Succesful in reconnecting to the Stofa Server\n");
exit;
}
fclose($socket[1]);
}
else{
writeLog("[ERROR] $time $date Unable to create a socket - Try again later\n");
exit;
}
}
else {
// writeLog("[INFO] $time $date Connection to Stofa Server already up\n");
}
exit;
?>