Bob (NL)

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen

Bob is een computersysteem om een telefoonlijn door te schakelen aan de hand van een rooster. Bob kan gebruikt worden voor het doorschakelen van bv. een hulplijn binnen een pool van beantwoorders. Doorschakelen gebeurt middels de *21-doorschakeldienst van de betreffende telefoonprovider.

Bob Versie 1 was een Microsoft Windowsapplicatie. Bob Versie 2 werkt op Ubuntu Server. Dat is een zogenaamde Linuxdistributie. Dit artikel gaat over Bob Versie 2. Bob bestaat uit de volgende onderdelen:

  • Een computer met Ubuntu Server als operating system. Er hoeft geen gui geïnstalleerd te worden. De computer hoeft niet over veel rekenkracht te beschikken. De computer moet wel een aansluiting hebben voor een parallele of seriëele kabel;
  • Een analoge telefoonmodem die door Ubuntu Server aangestuurd kan worden. Dit is de bottle neck van Bob: Er zijn steeds minder analoge modems op de markt, en de meeste zijn ook nog eens niet geschikt voor Ubuntu Server of welke Linuxdistributie dan ook. In de praktijk heb je een externe modem nodig die middels een parallele of seriëele kabel aangesloten wordt op de computer;
  • De modem moet met een telefoonkabel aangesloten worden op de telefoonwandcontactdoos van het door te schakelen telefoonnummer;
  • Additioneel kan het systeem uitgerust worden met een breedbandinternetverbinding zoals ADSL, om de computer op afstand te kunnen beheren;
  • Het computerprogramma ckermit regelt de aansturing van de modem;
  • Het computerprogramma cron verzorgt het schema en de planning;
  • Het computerprogramma sysklogd houdt het logboek van doorschakelingen bij;
  • Het computerprogramma openssh zorgt ervoor dat mensen via internet het schema kunnen beheren.

Zie ook Minicom, Kermit en Modems

Installatie: 1. Installatie van de computer

Bob werkt op Ubuntu Server. Dat is een operating system dat eerst geïnstalleerd en geconfigureerd moet worden op de betreffende computer:

  • Download Ubuntu Server vanaf bv. hier. We adviseren om de meest recentelijke LTS-versie te gebruiken. Elke twee jaar komt zo'n LTS-versie uit. In april 2010 is versie 10.04 uitgekomen, en de volgende versie komt uit in april 2012;
  • Installeer Ubuntu Server, zonder gui (graphical user interface);
  • Werk de installatie bij middels de commando's
     sudo apt-get upgrade
    en
     sudo apt-get update 
  • Installeer OpenSSH-server, Kermit en sysklogd:
    sudo apt-get install openssh-server ckermit sysklogd
  • Maak een script dialresponder aan in map /usr/bin middels
     sudo touch /usr/bin/dialresponder
    en maak dit script uitvoerbaar middels
    chmod +x /usr/bindialresponder

Enable logging:

  • Haal het commentaar-teken weg uit de regel die met cron begint:
    sudo vi /etc/syslog.conf
  • Maak een leeg cron-log-bestand aan:
    sudo touch /var/log/cron.log
  • Herstart logging deamon:
    sudo /etc/init.d/sysklogd restart
  • Herstart cron:
    sudo /etc/init.d/cron restart

Netwerkconfiguratie:

  • Identificeer binnen de modem/router een IP-adres dat binnen het subnet valt, maar dat buiten de DHCP-range valt
  • Configureer middels NAT dat poort 22 (SSH) doorgestuurd wordt naar het gealloceerde IP-adres, of gebruik dat IP-adres als default server (zodat al het verkeer naar dat apparaat gaat)
  • Bepaal het ID van de netwerkkaart middels
    ifconfig
    . Doorgaans zal dit eth0 zijn.
  • Stel een vast IP-adres in voor de betreffende netwerkkaart (hier eth0) door de bijbehorende entry in bestand /etc/network/interfaces aan te passen. Bv.:
auto eth0
iface eth0 inet static
address 192.168.1.16
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.254

Installatie: 2. Test modem

De modem is de bottle neck van het systeem: Er worden steeds minder analoge telefoniemodems gemaakt, en de meeste zijn ook nog eens niet geschikt voor Linux. In de praktijk betekent dit dat er alleen externe modems gebruikt kunnen worden, die met een parallele of seriëele kabel verbonden zijn met de computer. Mogelijk dat je op sites zoals http://www.marktplaats.nl de meeste kans maakt om een modem te bemachtigen.

Linux kent verscheidene programma's om communicatie met een modem te testen. Meestal gebruik ik eerst Minicom, en eventueel daarna Kermit. Zie ook artikel Modems.

Installatie: 3. Maak dialresponder-script aan

Oorspronkelijke script:

#!/usr/bin/kermit +

set line /dev/ttyS0
set carrier-watch off # Dubieus
set dial display on # Gaan sommige modems van flippen
set dial timeout 1 

output at*ncd # Anti-war-dialing

dial *21*\%1#

dial 0201234567890
 
exit

Aangepast script (feb. 2010):

Onderstaand script werkte voor een modem waarbij bovenstaand script niet werkte. Commentaar is in-line gegeven:

#!/usr/bin/kermit +

set line /dev/ttyS1 # link naar /dev/modem is niet handig, want blijft niet behouden na herstart computer
# set carrier-watch off # Blijkt niet uit te maken bij ongewone kiestoon
# set dial ignore-dialtone on # Blijkt niet uit te maken bij ongewone kiestoon
set dial timeout 10 # Bij ongewone kiestoon duurt het langer voor de modem begint met uitbellen

show communications
show dial
show modem

dial *21*\%1#

dial 02012345678

hangup # Nodig, anders komt Kermit wellicht met een prompt bij exit, dat er mogelijk nog communicatie gaande is

exit

Zou er een universeel script zijn, dan is dit het:

#!/usr/bin/kermit +

set line /dev/ttyS1
set carrier-watch off
set dial ignore-dialtone on
 
output at*ncd

show communications
show dial
show modem

dial 02012345678 
dial *21*\%1#
dial 02012345678

hangup

exit

Een paar opmerkingen:

  • De standaard time-out is 70 seconde. Dat wordt nu zo gelaten;
  • Voor het doorschakelen wordt er gebeld, zodat het persoon wiens dienst aan het aflopen is, weet dat dit het geval is.

Voor details, zie artikel Kermit

Installatie: 4. Test dialresponder-script

Het script kun je het beste testen als je thuis het systeem aan het configureren bent, de computer aansluit op je eigen telefoonlijn, en het nummer doorschakelt naar je mobieltje.

Log bekijken

less /var/log/cron.log | grep dialresponder

Remote access

De server is bereikbaar via SSH. Op Windows-computers is de gebruikelijke client het programma PuTTY

Rooster bekijken

crontab -l

Rooster bewerken

Met

crontab -e

kun je het rooster bewerken. Hier is een voorbeeld:

# Minuten Uren Dag-van-de-maand Maand Dag-van-de-week Commando
#
# Bijvoorbeeld:
#
# Schakel maandag om 19:00 door naar Hans:
#
##################################
#
41 18 * * 1 dialresponder 0634567890 # Hans
43 18 * * 1 dialresponder 0645678901 # Jeroen

Onderaan het scherm zie je sneltoetsen. Het dakje geeft aan dat je een toets samen met CTRL moet indrukken. De meest relevante toetscombinatie:

CTRL-X

om het rooster op te slaan en af te sluiten.

Tijd weergeve

Commando in Bash:

date

Handig, want ik geloof dat een nieuwe crontask minimaal een volle minuut in de toekomst moet plaatsvinden.