rss feed | comments (0) | contact me current directory: home / linux
[site tree]  

the diald 5-minute howto

diald is an excellent tool for connecting and disconnecting to and from a network on demand. unfortunately, most people's initial reaction upon looking at the documentation is to scream and run back to the ppp dialer they used before. actually, it only takes a few minutes to set up diald, it's just that there's way, way too much info in the docs that you'll probably never need, so that the info you do need is buried in the avalanche. hence this how-to.

there are several man pages, but the only one you really need to check out is diald-examples. scan down past all the bizzaro "here's a script you could use if you used your vcr to connect by uucp to a bbs though a firewall" stuff, and you'll find one or two generic examples.

basically, you just need to edit /etc/diald.conf. this sets up the most basic stuff and tells diald where to go to find all the other scripts.

mine goes something like:

mode ppp
fifo /etc/diald/diald.ctl
connect /usr/lib/diald/connect

device /dev/modem
speed 115200
modem
lock
crtscts

local 192.168.0.1
remote 192.168.0.2
dynamic
defaultroute
include /usr/lib/diald/standard.filter
then you just edit /usr/lib/diald/connect; it's pretty clear what to do with it. i actually do something just slightly more complicated: smartnet has a 56k number that gives busy signals from time to time and a 28k number that's never busy. if i can't get on the 56k line, i want the dailing to roll over to the 28k line, so i copied the connect script over to connect-56k and connect-28k, and replaced it with this:

#!/bin/sh
/usr/lib/diald/connect-56k && exit 0
/usr/lib/diald/connect-28k && exit 0
exit 4
if it can't get on the one number, it tries the other. if that fails, diald starts again with the first number. (could be handy if you had ppp accounts with more than one isp, too, no?)

connect-56k and connect-28k both look like:

#!/bin/sh
# Copyright (c) 1996, Eric Schenk.
#
# This script is intended to give an example of a connection script that
# uses the "message" facility of diald to communicate progress through
# the dialing process to a diald monitoring program such as dctrl or diald-top.
# It also reports progress to the system logs. This can be useful if you
# are seeing failed attempts to connect and you want to know when and why
# they are failing.
#
# This script requires the use of chat-1.9 or greater for full
# functionality. It should work with older versions of chat,
# but it will not be able to report the reason for a connection failure.

# Configuration parameters

# The initialization string for your modem

MODEM_INIT="ATZ&C1&D2%C0"

# The phone number to dial
PHONE_NUMBER="410-880-3090"

# The chat sequence to recognize that the remote system
# is asking for your user name.
USER_CHAT_SEQ="name:--name:--name:--name:--name:--name:--name:"

# The string to send in response to the request for your user name.
USER_NAME="username"

# The chat sequence to recongnize that the remote system
# is asking for your password.
PASSWD_CHAT_SEQ="word:"

# The string to send in response to the request for your password.
PASSWORD="password"

# The prompt the remote system will give once you are logged in
# If you do not define this then the script will assume that
# there is no command to be issued to start up the remote protocol.
PROMPT="annex:"
# The command to issue to start up the remote protocol
PROTOCOL_START="2"

# The string to wait for to see that the protocol on the remote
# end started OK. If this is empty then no check will be performed.
START_ACK=""

# Pass a message on to diald and the system logs.
function message () {
[ $FIFO ] && echo "message $*" >$FIFO
logger -p local2.info -t connect "$*"
}

# Initialize the modem. Usually this just resets it.
message "Initializing Modem"
chat TIMEOUT 5 "" $MODEM_INIT TIMEOUT 45 OK ""
if [ $? != 0 ]; then
    message "Failed to initialize modem"
    exit 1
fi

# Dial the remote system.

message "Dialing system"
chat TIMEOUT 45 ABORT "NO CARRIER" ABORT BUSY ABORT "NO DIALTONE" ABORT ERROR ""  ATS6=9 ""  ATDT$PHONE_NUMBER CONNECT ""
case $? in
   0) message Connected;;
   1) message "Chat Error"; exit 1;;
   2) message "Chat Script Error"; exit 1;;
   3) message "Chat Timeout"; exit 1;;
   4) message "No Carrier"; exit 1;;
   5) message "Busy"; exit 1;;
   6) message "No DialTone"; exit 1;;
   7) message "Modem Error"; exit 1;;
   *)
esac

# We're connected try to log in.
message "Loggin in"
chat TIMEOUT 5 $USER_CHAT_SEQ \\q$USER_NAME TIMEOUT 45 $PASSWD_CHAT_SEQ $PASSWORD
if [ $? != 0 ]; then
    message "Failed to log in"
    exit 1
fi

# We logged in, try to start up the protocol (provided that the
# user has specified how to do this)

if [ $PROMPT ]; then
    message "Starting Comm Protocol"
    chat TIMEOUT 15 $PROMPT $PROTOCOL_START
    if [ $? != 0 ]; then
        message "Prompt not received"
        exit 1
    fi
fi

if [ $START_ACK ]; then
    chat TIMEOUT 15 $START_ACK ""
    if [ $? != 0 ]; then
	message "Failed to start Protocol"
	exit 1
    fi
fi

# Success!
message "Protocol started"

i hope that helps get you started. if you use x, don't forget to check out /usr/local/bin/start-dctrl; it's very, very nice.

if you have any suggestion on how this page could be more helpful, please let me know.

comments (0) | contact me this page was last updated on:
2004-12-28 19:15:44

creativecommons logo all of the original content on this website is available under the creative commons attribution-sharealike license.