diff --git a/docs/nmap-update.1 b/docs/nmap-update.1
index 3550ffbd4..a63e27f9a 100644
--- a/docs/nmap-update.1
+++ b/docs/nmap-update.1
@@ -2,12 +2,12 @@
.\" Title: nmap-update
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.76.1
-.\" Date: 02/25/2012
+.\" Date: 03/01/2012
.\" Manual: nmap-update Reference Guide
.\" Source: nmap-update
.\" Language: English
.\"
-.TH "NMAP\-UPDATE" "1" "02/25/2012" "nmap\-update" "nmap\-update Reference Guide"
+.TH "NMAP\-UPDATE" "1" "03/01/2012" "nmap\-update" "nmap\-update Reference Guide"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/docs/nmap.1 b/docs/nmap.1
index d5f2e73f3..9cfb22980 100644
--- a/docs/nmap.1
+++ b/docs/nmap.1
@@ -2,12 +2,12 @@
.\" Title: nmap
.\" Author: [see the "Author" section]
.\" Generator: DocBook XSL Stylesheets v1.76.1
-.\" Date: 02/25/2012
+.\" Date: 03/01/2012
.\" Manual: Nmap Reference Guide
.\" Source: Nmap
.\" Language: English
.\"
-.TH "NMAP" "1" "02/25/2012" "Nmap" "Nmap Reference Guide"
+.TH "NMAP" "1" "03/01/2012" "Nmap" "Nmap Reference Guide"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -1354,9 +1354,10 @@ http\-\&.
Lets you provide arguments to NSE scripts\&. Arguments are a comma\-separated list of
name=value
pairs\&. Names and values may be strings not containing whitespace or the characters \(oq{\(cq, \(oq}\(cq, \(oq=\(cq, or \(oq,\(cq\&. To include one of these characters in a string, enclose the string in single or double quotes\&. Within a quoted string, \(oq\e\(cq escapes a quote\&. A backslash is only used to escape quotation marks in this special case; in all other cases a backslash is interpreted literally\&. Values may also be tables enclosed in
-{}, just as in Lua\&. A table may contain simple string values or more name\-value pairs, including nested tables\&. A complex example of script arguments is
-.\" --script-args: example of .sp .if n \{\ .RS 4 .\} .nf \fB\-\-script\-args \*(Aquser=foo,pass=",{}=bar",whois={whodb=nofollow+ripe},userdb=custom\*(Aq\fR .fi .if n \{\ .RE .\}
-The online NSE Documentation Portal at
+{}, just as in Lua\&. A table may contain simple string values or more name\-value pairs, including nested tables\&. Many scripts qualify their arguments with the script name, as in
+xmpp\-info\&.server_name\&. You may use that full qualified version to affect just the specified script, or you may pass the unqualified version (server_name
+in this case) to affect all scripts using that argument name\&. A script will first check for its fully qualified argument name (the name specified in its documentation) before it accepts an unqualified argument name\&. A complex example of script arguments is
+\fB\-\-script\-args \*(Aquser=foo,pass=",{}=bar",whois={whodb=nofollow+ripe},xmpp\-info\&.server_name=localhost\*(Aq\fR\&. The online NSE Documentation Portal at
\m[blue]\fB\%http://nmap.org/nsedoc/\fR\m[]
lists the arguments that each script accepts\&.
.RE
diff --git a/docs/refguide.xml b/docs/refguide.xml
index a2c7930cf..bcf38e31a 100644
--- a/docs/refguide.xml
+++ b/docs/refguide.xml
@@ -2398,14 +2398,8 @@ escapes a quote. A backslash is only used to escape quotation marks in this
special case; in all other cases a backslash is interpreted literally. Values
may also be tables enclosed in {}, just as in Lua. A table
may contain simple string values or more name-value pairs, including nested
-tables. A complex example of script arguments is
-
-example of
-
---script-args 'user=foo,pass=",{}=bar",whois={whodb=nofollow+ripe},userdb=custom'
-
-
-The online NSE Documentation Portal at
+tables. Many scripts qualify their arguments with the script name, as in xmpp-info.server_name. You may use that full qualified version to affect just the specified script, or you may pass the unqualified version (server_name in this case) to affect all scripts using that argument name. A script will first check for its fully qualified argument name (the name specified in its documentation) before it accepts an unqualified argument name. A complex example of script arguments is
+. The online NSE Documentation Portal at
lists the arguments that each script accepts.
diff --git a/docs/scripting.xml b/docs/scripting.xml
index a7c45a3c1..1d45dd592 100644
--- a/docs/scripting.xml
+++ b/docs/scripting.xml
@@ -959,8 +959,9 @@ http://nmap.org/nsedoc/scripts/afp-showmount.html
option. The arguments describe a table of
key-value pairs and possibly array values. The arguments are provided to
scripts as a table in the registry called
- nmap.registry.args.
+ nmap.registry.args, though they are normally accessed through the stdnse.get_script_args function.
+
The syntax for script arguments is similar to Lua's table constructor
syntax. Arguments are a comma-separated list of
@@ -984,6 +985,27 @@ http://nmap.org/nsedoc/scripts/afp-showmount.html
script, in a table named after the script. That is what is happening with
the whois table in the example below.
+
+ Script arguments are often qualified with the relevant
+ script name so that a user doesn't unintentially affect multiple
+ scripts with a single generic name. For example, you can set
+ the timeout for responses to the
+ broadcast-ping script (and only that script)
+ by setting broadcast-ping.timeout to the
+ number of milliseconds you're willing to wait. Sometimes,
+ however, you want a script argument applied more widely. If you
+ remove the qualification and specify just
+ timeout=250, you will be setting the value
+ for more than a dozen scripts in addition to
+ broadcast-ping. You can even combine
+ qualified and unqualified arguments, and the most specific match
+ takes precedence. For example, you could specify
+ rlogin-brute.timeout=20000,timeout=250. In
+ that case, the timeout will be 20,000 for the
+ rlogin-brute scripts, and 250 for all other
+ scripts which support this variable
+ (broadcast-ping,
+ lltd-discovery, etc.)Rather than pass the arguments on the command line with
, you may store them in a file
@@ -999,7 +1021,7 @@ http://nmap.org/nsedoc/scripts/afp-showmount.html
example of
-nmap -sC --script-args 'user=foo,pass=",{}=bar",whois={whodb=nofollow+ripe},userdb=custom'
+nmap -sC --script-args 'user=foo,pass=",{}=bar",whois={whodb=nofollow+ripe},xmpp-info.server_name=localhost'
Notice that the script arguments are surrounded in single quotes. For the
@@ -1014,13 +1036,12 @@ nmap.registry.args = {
whois = {
whodb = "nofollow+ripe"
},
- userdb="custom"
+ xmpp-info.server_name="localhost"
}
- You could then access the username "foo" inside
- your script with this statement:
+ While you could access the values directly from nmap.registry.args, it is normally better to use the stdnse.get_script_args function like this:
-local username = nmap.registry.args.user
+local server_name = stdnse.get_script_args("xmpp-info.server_name")
diff --git a/docs/zenmap.1 b/docs/zenmap.1
index 1315e5ea7..1a13da411 100644
--- a/docs/zenmap.1
+++ b/docs/zenmap.1
@@ -2,12 +2,12 @@
.\" Title: zenmap
.\" Author: [see the "Authors" section]
.\" Generator: DocBook XSL Stylesheets v1.76.1
-.\" Date: 02/25/2012
+.\" Date: 03/01/2012
.\" Manual: Zenmap Reference Guide
.\" Source: Zenmap
.\" Language: English
.\"
-.TH "ZENMAP" "1" "02/25/2012" "Zenmap" "Zenmap Reference Guide"
+.TH "ZENMAP" "1" "03/01/2012" "Zenmap" "Zenmap Reference Guide"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------