Provided by: whereami_0.3.34-0.3_all bug


       detect.conf — provides the configuration for detection of locations for


       The detect.conf file specifies the tests that allow whereami to  figure
       out  where  it  is.   The  environment of such tests can be manipulated
       using the 'set' command.  Tests can be performed conditionally upon the
       results of other tests using "if ... fi" constructs.

       Comments are lines starting with the `#' character.  Leading whitespace
       is ignored on all lines, including comment lines.

   Internal Commands
       The syntax of this file is fairly straightforward.  Tests are specified

       testname parameter locations
                 The  command testname is run with the single parameter (which
                 may be split internally).  If the return value is 0, the test
                 is  considered  `successful' and the locations are considered

                 locations is a list of comma separated identifiers, each  one
                 matching the regexp ``[[:alnum:]._-]+''.

                 On  success, processing will skip all non-`always' statements
                 up to the next `if' or `fi' keyword, whichever is earlier.

       if location statements ...  [elif  location  statements  ...]...  [else
       statements ...] fi
                 If  the  location  is  in the list of locations discovered so
                 far,  then  the  statements  in  the  `if'  branch  will   be
                 processed.   Otherwise,  if present, the statements in either
                 the `elif' or the `else'  (as  appropriate)  branch  will  be

                 Note  that  nesting  of  `if' blocks is not supported at this

       always testname parameter locations
                 A test preceded by the word `always' is not skipped unless it
                 is within the inactive branch of an `if' clause.

       set variable value
                 The   environment  variable  is  defined  as  value  for  all
                 subsequent test scripts and in the  shell  script  eventually
                 constructed by whereami.

       at locations
                 The locations will be added to the "discovered" list.

       notat locations
                 The locations will be removed from the "discovered" list.

       echo quoted text string
                 The  "quoted  text  string"  will be displayed to the user on

       The parameter and locations     may be lists, with a comma  (",")  used
       to separate multiple values.

       Any  program  may  be  used  as  a  test so long as it accepts a single
       parameter and returns zero on success and non-zero on failure.

       If a parameter of the test script must contain a  space,  it  parameter
       will need to be quoted.

       A number of tests are included in the whereami package.

       testdhcp [interface,]pattern
                 Tests  for  the  assignment by DHCP of an IP address matching
                 the  specified  address  pattern.   If  not  specified,   the
                 interface defaults to `eth0'.

                 Note   that  the  first  execution  of  this  test  during  a
                 particular run of whereami induces  a  DHCP  request  on  the
                 specified interface.

       testmii interface
                 Checks for the presence of a link on interface using the mii-
                 tool utility.  If a link is not found then the interface will
                 be 'down'ed to limit side-effects on other detection later.

       testpppoe interface
                 Tries to start a PPPoE connection on the specified interface.
                 Success is returned if the connection starts.

       testarp interface,mac_address,ip_address
                 Performs an arping (Debian package: iputils-arping)  to  look
                 for  the  specified mac_address and ip_address combination on
                 the network connected to interface.

       testping [interface,]ip_to_ping,ip_to_use
                 Uses the fping program to perform a fast ping to look for the
                 presence of a particular host on the local network.

       testpci pattern
                 Searches for the pattern in the output of lspci -v.

                 This  enables  checking  for  specific  hardware,  such  as a
                 particular type of docking station.

       testmodule pattern
                 Searches for the pattern in the output of lsmod.

                 This is useful for checking for the presence of a  particular
                 PCMCIA card, or possibly a particular kernel configuration.

       testap [interface,]scan

       testap pattern[,WEP Key]

       testap [interface,]pattern,WEP Key
                 The  pattern  is  a  regexp  (egrep  regexp) used to match AP
                 essids: when this regexp matches a detected essid the test is
                 considered succesfull.

                 This  check does not require encryption to be set up to work,
                 although it may not find stealthier equipment - use  testssid
                 in that case.

                 The  'scan'  option will cause a new scan, and the first call
                 should have this option set.  Subsequent calls will  use  the
                 results  of  that first scan, reducing the overhead for those
                 busy people who connect to many WLANs!

                 If a WEP key is supplied, and a pattern match is  found,  the
                 key  will  be  assigned  to that interface so that subsequent
                 tests should work correctly.

                 When using the WEP key you may in some cases desire  to  pass
                 additional  parameters  to iwconfig.  These parameters may be
                 passed  preceding  the  WEP  key  and   separated   with   an
                 underscore.  For example "restricted_0123-4567-89" will force
                 the card to be configured to insist on 'restricted'  mode  at
                 the same time as the key was set.

       testappassive [interface,]scan

       testappassive pattern

       testap [interface,]pattern
                 Checks  whether the specified AP is present, passively.  This
                 check does not alter the essid on the interface, or  set  the
                 WEP  key like the testap test.  It just uses iwlist interface
                 scan.  This is useful where you have another external  script
                 that  sets  up  all the wifi settings, and running whereami a
                 second time destroys the  running  wifi  connection,  as  can
                 happen on boot where networking is intialised before whereami
                 starting in run level 2.

                 The 'scan' option will cause a new scan, and the  first  call
                 should  have  this option set.  Subsequent calls will use the
                 results of that first scan, reducing the overhead  for  those
                 busy people who connect to many WLANs!

       testprocsys proc-or-sys-path,egrep-pattern
                 Checks the specified /sys or /proc file to see if it contains
                 the given egrep expression.   Non-existent  file  results  in
                 failure,  as  well  as  a  failed  match.   Useful  for those
                 interfaces that require to hotplug to be configured  so  that
                 firmware  can be loaded.  On machine shutdown, hotplug can be
                 disabled  before  networking  interfaces,  and  this  enables
                 whereami to function correctly in those circumstances.

       testssid ssid[,key]
                 Checks  whether  the  wireless  interface  is in range of the
                 specified ssid, using the key if supplied.  The key should be
                 formatted  as  for  iwconfig.   What  works for me looks like
                 da18babe100ea4beadb74324bc ("128"  bits)  or  fe3d1b3ed7  (40

                 This  script will also respond to a TIMEOUT variable which is
                 set before it is called, but waiting for $TIMEOUT seconds for
                 the network to settle (default 2).

                 This is useful for checking which wireless LAN is in range.

       testreceived [interface]
                 Checks  whether  the  interface  in question has received any

                 This is  useful  for  checking  which  network  interface  is
                 actually connected to a network.


       The  following  examples  show  simple setups, firstly for a wired only
       configuration, and secondly for a mixed wireless and wired setup.

       A Simple Wired DHCP Configuration

       # Simple wired DHCP with two networks
       default undocked
       testmii eth0 lan
       if lan
       set INTERFACE eth0
       testdhcp    restart    dhcp
       if dhcp
       testdhcp    ''    home
       testdhcp    '152.81.*.*'    univ

       A Wired and Wireless Configuration

       # Configuration including both wired and wireless networks
       default undocked
       testmii eth0 lan

       # We prefer a wired network, but if we aren't wired
       # we will look for a WLAN.
       if lan
       set INTERFACE eth0
       testdhcp    restart    dhcp
       set INTERFACE wlan0
       testap scan wlan

       # Try WLANs until it we find one that works
       if wlan
       testap  homessid,dead-beef-dead-beef-dead-beef-be wlhome_enc
       testap  homessid wlhome_open

       # If we are at a WLAN we should have the AP setup now
       if wlan
       # WLAN almost always will be DHCP
       testdhcp    restart    dhcp

       # Now identify the actual network
       if dhcp
       testdhcp    ''    home
       testdhcp    ''    wlhomeip
       testdhcp    '152.81.*.*'    work


       whereami(8), whereami.conf(5)

       Further  documentation  is  available  in  the  /usr/share/doc/whereami


                 The file we are talking about in this here manpage.

                 Defines  the  actions  performed  as  a  result  of entering,
                 leaving, or remaining at a particular location.


       The `if' syntax does not support nesting.


       This manual page was written by Andrew  McMillan  <>  for
       the Debian GNU/Linux system (but may be used by others).  Permission is
       granted to copy, distribute and/or modify this document under the terms
       of the GPL version 2.