Avatar billede gnyff Nybegynder
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????
Avatar billede arne_v Ekspert
18. juli 2003 - 19:59 #1
Det burde være ret nemt at skrive et lille C program som connecter
og afgiver diverse kommandoer.

Hvad man kan C altså.
Avatar billede johnstigers Seniormester
18. juli 2003 - 20:01 #2
Avatar billede disky Nybegynder
18. juli 2003 - 20:03 #3
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;

?>
Avatar billede thomasledet Nybegynder
19. juli 2003 - 02:57 #4
og med Expect er det endnu mere simpelt og faktisk til at overskue :)

installér Expect, hvis det ikke allerede er på din maskine ("apt-get install expect" i debian)

lav dernæst en fil og smid følgende der i:

#!/usr/bin/expect

spawn /usr/bin/telnet 192.168.30.2 259

expect -exact "Login: "
send "DITLOGIN\r"
expect -exact "Password: "
send "DITPASSWORD\r"
expect -exact "Enter your choice: "
send "1\r"
expect -exact "User authorized.  Welcome!"
expect eof
Avatar billede thomasledet Nybegynder
19. juli 2003 - 03:01 #5
denne fil kan man så køre som disky kører sit php-script
Avatar billede soreno Praktikant
19. juli 2003 - 18:22 #6
Jeg bruger denne løsning:

lynx -dump "http://signon.stofanet.dk/signon.php?user=XXXXXXXs001&pass=XXXXXX"

Hvis jeg vil se hvor meget jeg har downloadet.

Eller denne:
wget --spider "http://signon.stofanet.dk/signon.php?user=XXXXXXXs001&pass=XXXXXX"

Hvis jeg bare vil logge ind.


Det synes jeg er nemmest !

:-)
Avatar billede soreno Praktikant
19. juli 2003 - 18:25 #7
Hvordan man så får det til at køre automatisk afhænger af din distribution.

F.eks. med debian:

Hvis der er sansynlighed for at serveren bliver logget ud (pga. inaktivitet):
http://debianguiden.dk/dists/stable/html/cron.html

Hvis det er nok at der logges på ved boot:
http://debianguiden.dk/dists/stable/html/runlevels.html
Avatar billede klas Juniormester
16. november 2003 - 17:30 #8
Du kan bruge deres egen allways on service :

http://signon.stofanet.dk/always-on/

:)
Avatar billede gnyff Nybegynder
05. januar 2004 - 03:06 #9
Hejsa undskyld at jeg var så lang tid om at afslutte spørgsmålet, løb ind i nogen problemmer.

De virker sikkert alle sammen men jeg havde brug for en jeg lynhurtigt kunne smide over i min server, og efter jeg kender til lynx valgte jeg soreno's svar.

Men mange tak til jeg andre også
Avatar billede soreno Praktikant
05. januar 2004 - 07:26 #10
Der er kommet mulighed for at slippe for logon.

http://signon.stofanet.dk/always-on/

Jeg har tilmeldt mig, men jeg har faktisk ikke testet om det virker (jeg bruger stadig en script til at logge på med).
Avatar billede gnyff Nybegynder
05. januar 2004 - 07:57 #11
Jeg har lagt mærke til det, men jeg skulle lige være sikker på at når jeg starter serveren så logger den på nettet helt automatisk.

Nu har jeg også tilmeldt mig, men jeg foretrækker nu stadig at serveren har logon ved opstart :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester