yaz-client — Z39.50/SRU client for implementors
yaz-client
[-a
] [apdulog
-b
] [berdump
-c
] [cclfile
-d
] [dump
-f
] [cmdfile
-k
] [size
-m
] [marclog
-p
] [proxy-addr
-q
] [cqlfile
-t
] [dispcharset
-u
] [auth
-v
] [loglevel
-V
] [-x
] [server-addr]
yaz-client is a Z39.50/SRU client (origin) with a simple command line interface that allows you to test behavior and performance of Z39.50 targets and SRU servers.
From YAZ version 4.1.0 yaz-client may also operate as a Solr Web Service client.
If the server-addr
is specified, the client creates
a connection to the Z39.50/SRU target at the address given.
When yaz-client is started it tries to read commands from one of the following files:
Command file if it is given by option -f.
.yazclientrc
in current working directory.
.yazclientrc
in the user's home directory.
The value of the HOME
is used to determine
the home directory. Normally, HOME
is only set
on POSIX systems such as Linux, FreeBSD, Solaris.
filename
If specified, logging of protocol packages will be appended
file given. If filename
is
specified as -
, the output is written
to stdout
.
filename
If specified, YAZ will dump BER data in readable notation
to the file specified. If filename
is specified as -
the output is written
to stdout
.
filename
If specified, CCL configuration will be read from the file given.
dump
If specified, YAZ will dump BER data for all PDUs sent and received
to individual files, named
dump
.DDD.raw
,
where DDD is 001, 002, 003, ..
cmdfile
Reads commands from cmdfile
. When
this option is used, YAZ client does not read .yazclientrc
from current directory or home directory.
size
Sets preferred messages and maximum record size for Initialize Request in kilobytes. Default value is 65536 (64 MB).
filename
If specified, retrieved records will be appended to the file given.
proxy-addr
If specified, the client will use the proxy at the address given. YAZ client will connect to a proxy on the address and port given. The actual target will be specified as part of the InitRequest to inform the proxy about actual target.
filename
If specified, CQL configuration will be read from the file given.
displaycharset
If displaycharset is given, it specifies name of the character set of the output (on the terminal on which YAZ client is running).
auth
If specified, the auth
string
will be used for authentication.
-v
level
level
.
Level is a sequence of tokens separated by comma. Each token
is a integer or a named LOG item - one of
fatal
,
debug
,
warn
,
log
,
malloc
,
all
,
none
.
Prints YAZ version.
Makes the YAZ client print hex dumps of packages sent and received on standard output.
The YAZ client accepts the following commands.
open
zurl
Opens a connection to a server. The syntax for
zurl
is the same as described
above for connecting from the command line.
Syntax:
[(tcp|ssl|unix|http)':'
]host
[:port
][/base
]
quit
Quits YAZ client
find
query
Sends a Search Request using the query
given. By default the query is assumed to be PQF. See command
querytype for more information.
delete
setname
Deletes result set with name setname
on the server.
base
base1
base2
...
Sets the name(s) of the database(s) to search. One or more
databases may be specified separated by blanks. This commands overrides
the database given in zurl
.
show
[start
[+number
]]
Fetches records by sending a Present Request from the start
position given by
start
a number of records given by number
. If
start
is not given, then the client
will fetch from position of the last retrieved record plus 1. If
number
is not given, then one record will
be fetched at a time.
scan
term
Scans
database index for a term. The syntax resembles the syntax
for find
.
If you want to scan for the word water
you could
write
scan water
but if you want to scan only in, say the title field, you would write
scan @attr 1=4 water
setscan
set
term
scanpos
pos
scansize
size
scanstep
step
sort
sortspecs
Sorts a result set. The sort command takes a
sequence of space-separated sort specifications, with each sort
specification consisting of two space-separated words (so that the
whole specification list is made up of an even number of words).
The first word of each specification
holds a field (sort criterion) and the second holds flags.
If the sort criterion includes =
it is assumed
that the SortKey
is of type
sortAttributes
using Bib-1: in this case
the integer before =
is
the attribute type and the integer following =
is the attribute value.
If no =
character is in the criterion, it is treated
as a sortfield of type InternationalString.
The flags word of each sort specification must consist of
s
for case sensitive or i
for case insensitive, and
<
for ascending order or >
for descending order.
sort+
Same as sort
but stores the sorted
result set in a new result set.
authentication
openauth
Sets up a authentication string if a server requires
authentication (v2 OpenStyle). The authentication string is first
sent to the server when the
open
command is
issued and the Z39.50 Initialize Request is sent, so this command
must be used before open
in order to be effective.
A common convention for the authopen
string
is that the username - and password is separated by a slash, e.g.
myusername/mysecret
.
sru
method
version
Selects Web Service method and version.
Must be one of post
,
get
, soap
(default)
or solr
. Version
should be either 1.1, 1.2 or 2.0 for SRU.
Other versions are allowed - for testing
purposes (version negotiation with SRU server).
The version is currently not used for Solr Web Services
list_all
This command displays status and values for many settings.
lslb
n
Sets the limit for when no records should be returned together with the search result. See the Z39.50 standard on set bounds for more details.
ssub
n
Sets the limit for when all records should be returned with the search result. See the Z39.50 standard on set bounds for more details.
mspn
n
Sets the number of records should be returned if the
number of records in the result set is between the values of
lslb
and ssub
.
See the
Z39.50 standard on set bounds
for more details.
status
Displays the values of lslb
,
ssub
and mspn
.
setname
Switches named result sets on and off. Default is on.
cancel
Sends a Trigger Resource Control Request to the target.
format
oid
Sets the preferred transfer syntax for retrieved records. yaz-client supports all the record syntaxes that currently are registered. See Z39.50 Record Syntax Identifiers for more details. Commonly used records syntaxes include usmarc, sutrs and xml.
elements
e
Sets the element set name for the records. Many targets support element sets are B (for brief) and F (for full).
close
Sends a Z39.50 Close APDU and closes connection with the peer
querytype
type
Sets the query type as used by command
find
.
The following is supported:
prefix
for
Prefix Query Notation (Type-1 Query);
ccl
for CCL search (Type-2 Query),
cql
for CQL (Type-104 search with CQL OID),
ccl2rpn
for
CCL to RPN conversion (Type-1 Query).
cql2rpn
for
CQL to RPN conversion (Type-1 Query).
attributeset
set
Sets attribute set OID for prefix queries (RPN, Type-1).
refid
id
Sets reference ID for Z39.50 Request(s).
itemorder
type
no
Sends an Item Order Request using the ILL External.
type
is either 1 or 2 which corresponds to
ILL-Profile 1 and 2 respectively. The no
is the Result Set position of the record to be ordered.
update
action
recid
doc
Sends Item Update Request. The action
argument must be the action type: one of insert
,
replace
, delete
and
update
. The second argument,
recid
, is the
record identifier (any string). Third argument which is optional is
the record document for the request. If doc is preceded with
"<", then the following characters are treated as a filename
with the records to be updated. Otherwise doc is treated as
a document itself. The doc may also be quited in double quotes.
If doc is omitted, the last received record (as part of present
response or piggybacked search response) is used for the update.
source
filename
Executes list of commands from
file filename
, just like source on
most UNIX shells. A single dot (.
) can be used
as an alternative.
!
args
Executes command args
in subshell
using the system
call.
push_command
command
The push_command takes another command as its argument. That command is then added to the history information (so you can retrieve it later). The command itself is not executed. This command only works if you have GNU readline/history enabled.
set_apdufile
filename
Sets that APDU should be logged to file
filename
. Another way to achieve
APDU log is by using command-line option -a
.
set_auto_reconnect
flag
Specifies whether YAZ client automatically reconnect if target closes connection (Z39.50 only).
flag
must be either
on
or off
.
set_auto_wait
flag
Specifies whether YAZ client should wait for
response protocol packages after a request.
By default YAZ client waits (on) for response packages immediately
after a command (find, show) has been issued. If off
is used, YAZ client does not attempt to receive packages automatically.
These will have to be manually received when command
wait_response
is used.
flag
must be either
on
or off
.
set_marcdump
filename
Specifies that all retrieved records should be appended to
file filename
. This command does the
thing as option -m
.
schema
schemaid
Specifies schema for retrieval. Schema may be specified as an OID for Z39.50. For SRU, schema is a simple string URI.
charset
negotiationcharset
[displaycharset
]
[[marccharset
]]
Specifies character set (encoding) for Z39.50 negotiation / SRU encoding and/or character set for output (terminal).
negotiationcharset
is the name
of the character set to be negotiated by the server. The special name
-
for negotiationcharset
specifies no character set to be negotiated.
If displaycharset
is given, it specifies name
of the character set of the output (on the terminal on which
YAZ client is running). To disable conversion of characters
to the output encoding, the special name -
(dash)
can be used.
If the special name auto
is given, YAZ client will
convert strings to the encoding of the
terminal as returned by nl_langinfo
call.
If marcharset
is given, it specifies name
of the character set of retrieved MARC records from server. See
also marcharset
command.
Since character set negotiation takes effect in the Z39.50
Initialize Request you should issue this command before
command open
is used.
MARC records are not covered by Z39.50 character set negotiation, so that's why there is a separate character that must be known in order to do meaningful conversion(s).
negcharset
charset
Specifies character set for negotiation (Z39.50). The
argument is the same as second argument for command
charset
.
displaycharset
charset
Specifies character set for output (display). The
argument is the same as second argument for command
charset
.
marccharset
charset
Specifies character set for retrieved MARC records so
that YAZ client can display them in a character suitable
for your display. See charset
command.
If auto
is given, YAZ will assume
that MARC21/USMARC is using MARC8/UTF8 and ISO-8859-1
for all other MARC variants. The charset argument is the
same as third argument for command
charset
.
querycharset
charset
Specifies character set for query terms for Z39.50 RPN queries and Z39.50 Scan Requests (termListAndStartPoint). This is a pure client-side conversion which converts from displayCharset to queryCharset.
set_cclfile
filename
Specifies that CCL fields should be read from file
file filename
. This command does the
thing as option -c
.
set_cqlfile
filename
Specifies that CQL fields should be read from file
file filename
. This command does the
thing as option -q
.
register_oid
name
class
OID
This command allows you to register your own object
identifier - so that instead of entering a long dot-notation
you can use a short name instead.
The name
is your
name for the OID, class
is the
class, and OID
is the raw OID in
dot notation. Class is one appctx
,
absyn
, attet
,
transyn
, diagset
,
recsyn
, resform
,
accform
, extserv
,
userinfo
, elemspec
,
varset
, schema
,
tagset
, general
.
If you're in doubt use the general
class.
register_tab
command
string
This command registers a TAB completion string for the command given.
sleep
seconds
This command makes YAZ client sleep (be idle) for the number of seconds given.
wait_response
[ number
]
This command makes YAZ client wait for a number of
response packages from target. If number
is
omitted, 1 is assumed.
This command is rarely used and is only useful if command
set_auto_wait
is set to off.
xmles
OID
doc
Sends XML Extended Services request using the OID and doc given.
zversion
ver
This command sets Z39.50 version for negotiation.
Should be used before
open
.
By default 3 (version 3) is used.
options
op1 op2..
This command sets Z39.50 options for negotiation.
Should be used before
open
.
The following options are supported:
search
,
present
,
delSet
,
resourceReport
,
triggerResourceCtrl
,
resourceCtrl
,
accessCtrl
,
scan
,
sort
,
extendedServices
,
level_1Segmentation
,
level_2Segmentation
,
concurrentOperations
,
namedResultSets
,
encapsulation
,
resultCount
,
negotiationModel
,
duplicationDetection
,
queryType104
,
pQESCorrection
,
stringSchema
.
The simplest example of a Prefix Query would be something like
f knuth
or
f "donald knuth"
In those queries no attributes was specified. This leaves it up to the server what fields to search but most servers will search in all fields. Some servers does not support this feature though, and require that some attributes are defined. To add one attribute you could do:
f @attr 1=4 computer
where we search in the title field, since the use(1) is title(4). If we want to search in the author field and in the title field, and in the title field using right truncation it could look something like this:
f @and @attr 1=1003 knuth @attr 1=4 @attr 5=1 computer
Finally using a mix of Bib-1 and GILS attributes could look something like this:
f @attrset Bib-1 @and @attr GILS 1=2008 Washington @attr 1=21 weather