Bonjour,
> Je poste ici un resumé pour ceux qui me l'ont demandé.
> Il y a des questions a la fin ;-}
>
> 0 - Host RH5.2 full install
>
> 1 - Config du mgetty (version mgetty-1.1.14-5 pour moi)
>
> a- /etc/inittab
>
> S0:23456:respawn:/sbin/mgetty -n 5 cua1
> b- /etc/mgetty+sendfax/login.config
>
> une ligne doit apparaitre comme suit :
>
> /AutoPPP/ - - /usr/sbin/pppd auth -chap +pap login
Voici une petite doc que j'ai fais car om me la demande souvent.
Config du serveur avec mgetty-1.1.12
/etc/inittab
e0:12345:respawn:/sbin/mgetty -x 4 -s 57600 -C data ttyE0
..
..
eF:12345:respawn:/sbin/mgetty -x 4 -s 57600 -C data ttyEF
mgetty/login.mgetty
/AutoPPP/ - a_ppp /etc/ppp/ppplogin
fichier /etc/ppp/ppplogin affection des adresses IP dynamiques
gestion de 32 modems sur deux machines ( 2 * 16 )
Cartes multiports stallion, marche aussi avec des cyclades, etc ....
#!/bin/sh
PORT=`tty | cut -d '/' -f 3`
ID=""
IP=""
# On attaque les cartes Stallion
# Determination de l'adresse IP
echo "Serveur PPP : Ok"
# Adressage dynamique
if [ "`hostname`" = "votre_hosts_1" ]; then
if [ "`echo $PORT | cut -c1-4`" = "ttyE" ]; then
ID=`echo $PORT | cut -c5-`
IP=`nslookup ppp$ID.votre_domaine | tail -2 | grep Address | tr -d ' ' | cut -d ':' -f 2`
echo "Votre adresse IP : $IP"
exec /usr/sbin/pppd votre_hosts_1:$IP
fi
fi
if [ "`hostname`" = "votre_hosts_2" ]; then
if [ "`echo $PORT | cut -c1-4`" = "ttyE" ]; then
ID=`echo $PORT | cut -c5-`
ID=` expr $ID + 16`
IP=`nslookup ppp$ID.votre_domaine | tail -2 | grep Address | tr -d ' ' | cut -d ':' -f 2`
echo "Votre adresse IP : $IP"
exec /usr/sbin/pppd votre_hosts_2:$IP
fi
fi
echo "Vous n'etes pas autorise a lancer PPP."
fichier /etc/ppp/ip-up
#!/bin/sh
# /etc/ppp/ip-up
# V 1.0 du 23/01/1997
LOGTHEME=local2
DATE=`date +"%d/%m/%Y %H:%M:%S"`
HN=`hostname`
logger -p $LOGTHEME.notice "ip-up: $1 $6 $2 $3 $4 $5 $HN"
# script perl pour un historique des CNX necessite de modifier pppd
# avec une base msql
/etc/ppp/ip-up.pl $DATE up $6 $5 $2 $HN
fichier /etc/ppp/ip-up.pl
#!/usr/bin/perl -w
#
# (C) 1997, Les Inforoutes de l'Ardeche, Henry-Pascal ELDIN
#
#V 1.0b du 26/03/1998 ajout de la machine
# V 1.0a du 29/08/1997 Ajout du host msql
# V 1.0 du 08/01/1997
# Mise en Place
$host = "host_msql";
$version="1.0b";
$base="base";
$table_ppp="ppp_en_cours";
$debug=0;
use Msql;
package main;
if ($debug) { print "ip-up.pl v ",$version,"\n"; }
if ($dbh = Msql->Connect($host,$base)){
if ($debug) { print "Connection $host $base ok \n";}
} else {
die "Erreur de Cnx $host: $Msql::db_errstr\n";
}
# lecture des parametres
# dans l'ordre la date sous la forme jj/mm/AAAA
# l'heure sous la forme hh:mm:ss
# l'etat up ou dn
# le login ppp pap
# l'adresse IP de l'interface
# le device associe
# la machine
$date=$ARGV[0] ;
$heure=$ARGV[1];
$etat=$ARGV[2];
$login=$ARGV[3];
$adr_ip=$ARGV[4];
$device=$ARGV[5];
$machine=$ARGV[6];
if ($debug) {
print $date," ",$heure," ",$etat," ",$login," ",$adr_ip," ",$device," ",$machine,"\n";
}
$dbh->Query("insert into $table_ppp values
('$date','$heure','$etat','$login','$adr_ip','$device','$machine')")
or die $Msql::db_errstr;
fichier /etc/ppp/ip-down
#!/bin/sh
#/etc/ppp/ip-down
#v 1.0 du 23/01/1997
LOGTHEME=local2
logger -p $LOGTHEME.notice "ip-down: $1 $6 $2 $3 $4 $5"
DATE=`date +"%d/%m/%Y %H:%M:%S"`
#pour la mise a jour de la base msql
/etc/ppp/ip-down.pl $DATE dn $6 $5 $2
fichier /etc/ppp/ip-down.pl
#!/usr/bin/perl
#
# (C) 1997, Les Inforoutes de l'Ardeche, Henry-Pascal ELDIN
#
# V 1.2a du 29/08/1997 ajout du host
# V 1.2 du 10/03/1997
# Mise à jour de la table clients
# - calcul des cnx ppp, temps de cnx
# V 1.1 du 13/01/1997
# Modif sur la connexion est a cheval sur deux jour
# Nouveau format de la table ppp_cnx
# V 1.0 du 08/01/1997
# Mise en Place
$host = "host_msql";
$version="1.2a";
$base="base";
$table_ppp1="ppp_en_cours";
$table_ppp2="ppp_cnx";
$table_clients="clients";
$debug=0;
use Msql;
package main;
if ($debug) { print "ip-down v ",$version,"\n"; }
if ($dbh = Msql->Connect($host,$base)){
if ($debug) { print "Connection $host $base ok \n";}
} else {
die "Erreur de Cnx $host: $Msql::db_errstr\n";
}
# lecture des parametres
# dans l'ordre la date sous la forme jj/mm/AAAA
# l'heure sous la forme hh:mm:ss
# l'etat up ou dn
# le login ppp pap
# l'adresse IP de l'interface
# le device associe
$date=$ARGV[0] ;
$heure=$ARGV[1];
$etat=$ARGV[2];
$login=$ARGV[3];
$adr_ip=$ARGV[4];
$device=$ARGV[5];
if ($debug) {
print $date," ",$heure," ",$etat," ",$login," ",$adr_ip," ",$device,"\n";
}
# on recherche l'entree dans le fichier des encours
$sth=$dbh->Query("select * from $table_ppp1 where etat='up'
and login='$login' and adr_ip='$adr_ip' and dev='$device'") or die $Msql::db_errstr;
if ( $sth->numrows != 0 ) {
@row = $sth->FetchRow;
$xdate=$row[0];
$xheure=$row[1];
$xetat=$row[2];
$xlogin=$row[3];
$xadr_ip=$row[4];
$xdevice=$row[5];
if ($debug) {
print $xdate," ",$xheure," ",$xetat," ",$xlogin," ",$xadr_ip," ",$xdevice,"\n";
}
$dbh->Query("insert into $table_ppp2 values
('$xdate','$date','$xheure','$heure','$xlogin','$xadr_ip','$xdevice')")
or die $Msql::db_errstr;
$dbh->Query("delete from $table_ppp1 where
date='$xdate' and heure='$xheure' and etat='$xetat' and
login='$xlogin' and adr_ip='$xadr_ip' and dev='$xdevice'")
or die $Msql::db_errstr;
($hhd,$mhd,$shd)=$xheure =~ m!(..):(..):(..)!;
($hhf,$mhf,$shf)=$heure =~ m!(..):(..):(..)!;
$dtd=$shd+60*$mhd+3600*$hhd;
$dtf=$shf+60*$mhf+3600*$hhf;
if ($xdate eq $date) { $temps=$dtf-$dtd; }
else { $temps=86400 + $dtf - $dtd; }
if ($debug) {print "Temps = ",$temps,"s\n"; }
}
# mise à jour de la table clients
$sth=$dbh->Query("select * from $table_clients where login='$login'")
or die $Msql::db_errstr;
@row = $sth->FetchRow;
$log_ppp = $row[9];
$temps += $row[10];
$log_ppp += 1 ;
$sth=$dbh->Query("update $table_clients set log_ppp=$log_ppp , temps=$temps
where login='$login' ") or die $Msql::db_errstr;
Permettant de suivre en temps réel les connexions
fichier /usr/local/bin/netppp
#!/usr/bin/perl
#
# (C) 1997, Les Inforoutes de l'Ardeche, Henry-Pascal ELDIN
#
# V 1.0b du 26/03/1998 ajout de la machine
# V 1.0a du 29/08/1997 Ajout du host msql
# V 1.0 du 08/01/1997
# Mise en Place
$host = "host_msql";
$version="1.0a";
$base="base";
$table_ppp="ppp_en_cours";
$debug=0;
use Msql;
package main;
$arg0=$ARGV[0];
if ($arg0 eq "" ) { $arg0 = "-h"; }
if ($debug) { print "netppp.pl v ",$version,"\n"; }
if ($dbh = Msql->Connect($host,$base)){
if ($debug) { print "Connection $host $base ok \n";}
} else {
die "Erreur de Cnx $host: $Msql::db_errstr\n";
}
if ( $arg0 eq '-l' ) {
$sth=$dbh->Query("select * from $table_ppp order by heure") or die $Msql::db_errstr;
while ( @row = $sth->FetchRow ) {
print $row[3]," ",$row[0]," ",$row[1]," ",$row[4]," ",$row[5]," ",$row[6],"\n";
}
}
elsif ( $arg0 eq '-h' ) {
print "netppp v$version, (c) HP Eldin 1998\n";
print "syntaxe : netppp -h\t affiche l'aide\n";
print "syntaxe : netppp -l\t liste les connexions ppp\n";
print "syntaxe : netppp -d compte\t supprime le compte des connexions ppp en cours\n";
exit 0;
}
elsif ( $arg0 eq '-d') {
$arg1=$ARGV[1];
if ($arg1 eq "") { print "Compte ppp manquant !\n"; exit 0; }
$sth=$dbh->Query("delete from $table_ppp where login = '$arg1' ") or die $Msql::db_errstr;
print "Compte $arg1 supprime des connexions en cours !\n";
}
>
> ppp::102:50:Login ppp:/tmp:/bin/bash
>
pas besoin avec mgetty et autoppp !
> Attention on m'a propose aussi :
> > login * mot-de-passe ( tab ou espace ! )
> > ou bien
> > login nom-du-host mot-de-passe
> Mais je n'ai pas reussi a faire fonctionner.
J'ai 800 clients comme ca et je peut dire que ca marche !
Il n'y a pas besoin de mettre l'adresse Ip dans la config win9x,
il faut cocher adresse délivré par un serveur.
> 5- points qui restent a voir
> a- pourquoi mettre deux fois le N° IP ?
> b- comment affecter une adresse IP dynamiquement ?
Voir plus haut.
> c- comment faire passer du netbeui (pour pouvoir monter les volumes NT sur le client) ?
Ben, suffit de configurer netbeui comme protocol par défaut sous wintruc,
et ajouter tcp/ip, verifier dans les propriétés de tcp/ip que netbeui est
bien encapsulé, et hop, pas de problèmes, ca tourne.
> d- pourquoi le modem client delivre une vitesse debile (de 19200 a 33600 alors que je passe par le reseau telephone interne de ma boite (N° interne)) ?
Ben tout dépend du modem d'en face ....
> e- comment avoir plusieurs modems sur un meme pc ? (si il y en a deux ou trois je vois bien (3 ports series ca se fait), mais 10 ou 20 modems la je sais plus?
Cartes stallion ( 16, 32 ports ) cyclades ( 16 32 ports ) etc ....
> f- comment faire du call back (c'est a dire que le modem deccroche, identifie le client, raccroche, attends (delta T) redeccroche, compose le n° du client et etablit la
> liaison (economie de tel pour nos client commerciaux) ?
J'ai un répertoire /usr/src/mgetty-1.1.12/callback ?
jamais essayer, voir ce que ca fait 8-)))
> 6- proposition :
>
> S'il y a des volontaires pour m'aider, j'ecrirai bien un mini howto pour resumer les operations (complet : PPPD server+ getty+ pppclient)
>
J'veux bien filer un coup de main, l'ppp, c'est mon truc.
--
Cordialement,
Henry-Pascal ELDIN
Administration Systeme et Réseau de la Plateforme Internet du
Syndicat Intercommunal à Vocation Unique des Inforoutes de l'Ardèche
http://www.inforoutes-ardeche.fr