s3270 man page

s3270 — IBM host access tool

Synopsis

s3270 [options] [host]

s3270 [options] session-file.s3270

Description

s3270 opens a telnet connection to an IBM host, then allows a script to control the host login session. It is derived from x3270(1), an X-windows IBM 3270 emulator. It implements RFCs 2355 (TN3270E), 1576 (TN3270) and 1646 (LU name selection), and supports IND$FILE file transfer. The full syntax for host is:

[prefix:]...[LUname@]hostname[:port]

Prepending a P: onto hostname causes the connection to go through the telnet-passthru service rather than directly to the host. See Passthru below.

Prepending an S: onto hostname removes the "extended data stream" option reported to the host. See -tn below for further information.

Prepending an N: onto hostname turns off TN3270E support for the session.

Prepending an L: onto hostname causes s3270 to first create an SSL tunnel to the host, and then create a TN3270 session inside the tunnel. (This function is supported only if s3270 was built with SSL/TLS support). Note that TLS-encrypted sessions using the TELNET START-TLS option are negotiated with the host automatically; for these sessions the L: prefix should not be used.

Prepending a B: onto hostname changes the interaction of scripts and the host BIND-IMAGE message. Without B:, s3270 will unlock the keyboard as soon as a BIND-IMAGE is received. With B:, it will wait for a Write command that explicitly unlocks the keyboard.

A specific Logical Unit (LU) name to use may be specified by prepending it to the hostname with an `@'. Multiple LU names to try can be separated by commas. An empty LU can be placed in the list with an extra comma. (Note that the LU name is used for different purposes by different kinds of hosts. For example, CICS uses the LU name as the Terminal ID.)

The hostname may optionally be placed inside square-bracket characters `[' and `]'. This will prevent any colon `:' characters in the hostname from being interpreted as indicating option prefixes or port numbers. This allows numeric IPv6 addresses to be used as hostnames.

On systems that support the forkpty library call, the hostname may be replaced with -e and a command string. This will cause s3270 to connect to a local child process, such as a shell.

The port to connect to defaults to telnet. This can be overridden with the -port option, or by appending a port to the hostname with a colon `:'. (For compatability with previous versions of s3270 and with tn3270(1), the port may also be specified as a second, separate argument.)

Options

s3270 understands the following options:

-accepthostname spec
Specifies a particular hostname to accept when validating the name presented in the host's SSL certificate, instead of comparing to the name or address used to make the connection. spec can either be any, which disables name validation, DNS:hostname, which matches a particular DNS hostname, or IP:address, which matches a particular numeric IPv4 or IPv6 address.
-cadir directory
Specifies a directory containing CA (root) certificates to use when verifying a certificate provided by the host.
-cafile filename
Specifies a PEM-format file containing CA (root) certificates to use when verifying a certificate provided by the host.
-certfile filename
Specifies a file containing a certificate to provide to the host, if requested. The default file type is PEM.
-certfiletype type
Specifies the type of the certificate file specified by -certfile. Type can be pem or asn1.
-chainfile filename
Specifies a certificate chain file in PEM format, containing a certificate to provide to the host if requested, as well as one or more intermediate certificates and the CA certificate used to sign that certificate. If -chainfile is specified, it overrides -certfile.
-charset name
Specifies an EBCDIC host character set.
-clear toggle
Sets the initial value of toggle to false.
-connecttimeout seconds
Specifies the time that s3270 will wait for a host connection to complete.
-devname name
Specifies a device name (workstation ID) for RFC 4777 support.
-httpd [addr:]port

Specifies a port and optional address to listen on for HTTP connections. Addr can be specified as `*' to indicate 0.0.0.0; the default is 127.0.0.1. IPv6 numeric addresses must be specified inside of square brackets, e.g., [::1]:4080 to specify the IPv6 loopback address and TCP port 4080.

Note that this option is mutually-exclusive with the -scriptport option and disables reading commands from standard input.

-keyfile filename
Specifies a file containing the private key for the certificate file (specified via -certfile or -chainfile). The default file type is PEM.
-keyfiletype type
Specifies the type of the private key file specified by -keyfile. Type can be pem or asn1.
-keypasswd type:value
Specifies the password for the private key file, if it is encrypted. The argument can be file:filename, specifying that the password is in a file, or string:string, specifying the password on the command-line directly. If the private key file is encrypted and no -keypasswd option is given, secure connections will not be allowed.
-km name
Specifies the local encoding method for multi-byte text. name is an encoding name recognized by the ICU library. (Supported only when s3270 is compiled with DBCS support, and necessary only when s3270 cannot figure it out from the locale.)
-loginmacro Action(arg...) ...
Specifies a macro to run at login time.
-minversion version
The minimum required version of s3270, e.g., 3.5ga8. If the running version is less than the specified version, s3270 will abort. The format of a version is majorXX_FB(.)minorXX_FB(type)iteration. type is ignored, and minor and iteration can be omitted.
-model name

The model of 3270 display to be emulated. The model name is in two parts, either of which may be omitted:

The first part is the base model, which is either 3278 or 3279. 3278 specifies a monochrome (green on black) 3270 display; 3279 specifies a color 3270 display.

The second part is the model number, which specifies the number of rows and columns. Model 4 is the default.

Model NumberColumnsRows
28024
38032
48043
513227
Note: Technically, there is no such 3270 display as a 3279-4 or 3279-5, but most hosts seem to work with them anyway.

The default model is 3279-4.

-nvt
Start in NVT mode instead of waiting for the host to send data, and make the default terminal type xterm.
-oversize colsxrows
Makes the screen larger than the default for the chosen model number. This option has effect only in combination with extended data stream support (controlled by the "s3270.extended" resource), and only if the host supports the Query Reply structured field. The number of columns multiplied by the number of rows must not exceed 16383 (3fff hex), the limit of 14-bit 3270 buffer addressing.
-port n
Specifies a different TCP port to connect to. n can be a name from /etc/services like telnet, or a number. This option changes the default port number used for all connections. (The positional parameter affects only the initial connection.)
-proxy type:host[:port]
Causes s3270 to connect via the specified proxy, instead of using a direct connection. The host can be an IP address or hostname. The optional port can be a number or a service name. For a list of supported proxy types, see Proxy below.
-scriptport [addr:]port

Specifies a port and optional address to listen on for scripting connections. Addr can be specified as `*' to indicate 0.0.0.0; the default is 127.0.0.1. IPv6 numeric addresses must be specified inside of square brackets, e.g., [::1]:4081 to specify the IPv6 loopback address and TCP port 4081.

Note that this option is mutually-exclusive with the -httpd option and disables reading commands from standard input.

-scriptportonce
Allows s3270 to accept only one script connection. When that connection is broken, s3270 will exit.
-selfsignedok
When verifying a host SSL certificate, allow it to be self-signed.
-set toggle
Sets the initial value of toggle to true.
-socket
Causes the emulator to create a Unix-domain socket when it starts, for use by script processes to send commands to the emulator. The socket is named /tmp/x3sck.pid. The -p option of x3270if causes it to use this socket, instead of pipes specified by environment variables.
-tn name

Specifies the terminal name to be transmitted over the telnet connection. The default name is IBM-model_name-E, for example, IBM-3278-4-E.

Some hosts are confused by the -E suffix on the terminal name, and will ignore the extra screen area on models 3, 4 and 5. Prepending an s: on the hostname, or setting the "s3270.extended" resource to "false", removes the -E from the terminal name when connecting to such hosts.

The name can also be specified with the "s3270.termName" resource.

-trace
Turns on data stream and event tracing at startup. The default trace file name is /tmp/x3trc.
-tracefile file
Specifies a file to save data stream and event traces into. If the name starts with `>>', data will be appended to the file.
-tracefilesize size
Places a limit on the size of a trace file. If this option is not specified, or is specified as 0 or none, the trace file size will be unlimited. The minimum size is 64 Kbytes. The value of size can have a K or M suffix, indicating kilobytes or megabytes respectively. When the trace file reaches the size limit, it will be renamed with a `-' appended and a new file started.
-user name
Specifies the user name for RFC 4777 support.
-utf8
Forces the local codeset to be UTF-8, ignoring the locale or Windows codepage.
-v
Display the version and build options for s3270 and exit.
-verifycert
For SSL or SSL/TLS connections, verify the host certificate, and do not allow the connection to complete unless it can be validated.
-xrm "s3270.resource: value"
Sets the value of the named resource to value. Resources control less common s3270 options, and are defined under Resources below.

Actions

Here is a complete list of basic s3270 actions. Script-specific actions are described on the x3270-script(1) manual page. ).PP Actions marked with an asterisk (*) may block, sending data to the host and possibly waiting for a response.

*Attn
attention key
BackSpace
move cursor left (or send ASCII BS)
BackTab
tab to start of previous input field
CircumNot
input "^" in NVT mode, or "notsign" in 3270 mode
*Clear
clear screen
*Connect(host)
connect to host
*CursorSelect
Cursor Select AID
Delete
delete character under cursor (or send ASCII DEL)
DeleteField
delete the entire field
DeleteWord
delete the current or previous word
*Disconnect
disconnect from host
Down
move cursor down
Dup
duplicate field
*Enter
Enter AID (or send ASCII CR)
Erase
erase previous character (or send ASCII BS)
EraseEOF
erase to end of current field
EraseInput
erase all input fields
Execute(cmd)
execute a command in a shell
FieldEnd
move cursor to end of field
FieldMark
mark field
HexString(hex_digits)
insert control-character string
Home
move cursor to first input field
Insert
set insert mode
*Interrupt
send TELNET IP to host
Key(keysym)
insert key keysym
Key(0xxx)
insert key with character code xx
Left
move cursor left
Left2
move cursor left 2 positions
MonoCase
toggle uppercase-only mode
MoveCursor(row, col)
move cursor to zero-origin (row,col)
Newline
move cursor to first field on next line (or send ASCII LF)
NextWord
move cursor to next word
*PA(n)
Program Attention AID (n from 1 to 3)
*PF(n)
Program Function AID (n from 1 to 24)
PreviousWord
move cursor to previous word
PrintText(command)
print screen text on printer
Quit
exit s3270
Redraw
redraw window
Reset
reset locked keyboard
Right
move cursor right
Right2
move cursor right 2 positions
*Script(command[,arg...])
run a script
*String(string)
insert string (simple macro facility)
Tab
move cursor to next input field
Toggle(option[,set|clear])
toggle an option
ToggleInsert
toggle insert mode
ToggleReverse
toggle reverse-input mode
*Transfer(option=value...')
file transfer
Up
move cursor up

Note that certain parameters to s3270 actions (such as the names of files and keymaps) are subject to substitutions:

The character ~ at the beginning of a string is replaced with the user's home directory. A ~ character followed by a username is replaced with that user's home directory.

Environment variables are substituted using the Unix shell convention of $name or ${name}.

Two special pseudo-environment variables are supported. ${TIMESTAMP} is replaced with a microsecond-resolution timestamp; ${UNIQUE} is replaced with a string guaranteed to make a unique filename (the process ID optionally followed by a dash and a string of digits). ${UNIQUE} is used to form trace file names.

File Transfer

The Transfer action implements IND$FILE file transfer. This action requires that the IND$FILE program be installed on the IBM host, and that the 3270 cursor be located in a field that will accept a TSO or VM/CMS command.

Because of the complexity and number of options for file transfer, the parameters to the Transfer action take the unique form of option=value, and can appear in any order. Note that if the value contains spaces (such as a VM/CMS file name), then the entire parameter must be quoted, e.g., "HostFile=xxx foo a". The options are:

OptionRequired?DefaultOther Values
DirectionNoreceivesend
HostFileYes
LocalFileYes
HostNotsovm, cics
ModeNoasciibinary
CrNoremoveadd, keep
RemapNoyesno
ExistNokeepreplace, append
RecfmNo fixed, variable, undefined
LreclNo
BlksizeNo
AllocationNo tracks, cylinders, avblock
PrimarySpaceSometimes
SecondarySpaceNo
AvblockSometimes
BufferSizeNo4096

The option details are as follows.

Direction
send to send a file to the host, receive to receive a file from the host.
HostFile
The name of the file on the host.
LocalFile
The name of the file on the local workstation.
Host
The type of host (which dictates the form of the IND$FILE command): tso (the default), vm or cics.
Mode
Use ascii (the default) for a text file, which will be translated between EBCDIC and ASCII as necessary. Use binary for non-text files.
Cr
Controls how Newline characters are handled when transferring Mode=ascii files. remove (the default) strips Newline characters in local files before transferring them to the host. add adds Newline characters to each host file record before transferring it to the local workstation. keep preserves Newline characters when transferring a local file to the host.
Remap
Controls text translation for Mode=ascii files. The value yes (the default) causes s3270 to remap the text to ensure maximum compatibility between the workstation's character set and encoding and the host's EBCDIC code page. The value no causes s3270 to pass the text to or from the host as-is, leaving all translation to the IND$FILE program on the host.
Exist
Controls what happens when the destination file already exists. keep (the default) preserves the file, causing the Transfer action to fail. replace overwrites the destination file with the source file. append appends the source file to the destination file.
Recfm
Controls the record format of files created on the host. (TSO and VM hosts only.) fixed creates a file with fixed-length records. variable creates a file with variable-length records. undefined creates a file with undefined-length records (TSO hosts only). The Lrecl option controls the record length or maximum record length for Recfm=fixed and Recfm=variable files, respectively.
Lrecl
Specifies the record length (or maximum record length) for files created on the host. (TSO and VM hosts only.)
Blksize
Specifies the block size for files created on the host. (TSO and VM hosts only.)
Allocation
Specifies the units for the PrimarySpace and SecondarySpace options: tracks, cylinders or avblock. (TSO hosts only.)
PrimarySpace
Primary allocation for a file. The units are given by the Allocation option. Required when the Allocation is specified as something other than default. (TSO hosts only.)
SecondarySpace
Secondary allocation for a file. The units are given by the Allocation option. (TSO hosts only.)
Avblock
Average block size, required when Allocation specifies avblock. (TSO hosts only.)
BufferSize
Buffer size for DFT-mode transfers. Can range from 256 to 32768. Larger values give better performance, but some hosts may not be able to support them.

There are also resources that control the default values for each of the file transfer parameters. These resources have the same names as the Transfer keywords, but with ft prepended. E.g., the default for the Mode keyword is the s3270.ftMode resource.

The Printtext Action

The PrintText produces screen snapshots in a number of different forms. The default form wth no arguments sends a copy of the screen to the default printer. A single argument is the command to use to print, e.g., lpr.

Multiple arguments can include keywords to control the output of PrintText:

file filename
Save the output in a file.
html
Save the output as HTML. This option implies file.
rtf
Save the output as RichText. This option implies file. The font defaults to Courier New and the point size defaults to 8. These can be overridden by the printTextFont and printTextSize resources, respectively.
string
Return the output as a string. This can only be used from scripts.
modi
Render modified fields in italics.
caption text
Add the specified text as a caption above the output. Within text, the special sequence %T% will be replaced with a timestamp.
command command
Directs the output to a command. This allows one or more of the other keywords to be specified, while still sending the output to the printer.

Nested Scripts

There are several types of nested script functions available.

The String Action

The simplest method for nested scripts is provided via the String action. The arguments to String are one or more double-quoted strings which are inserted directly as if typed. The C backslash conventions are honored as follows. (Entries marked * mean that after sending the AID code to the host, s3270 will wait for the host to unlock the keyboard before further processing the string.)

\bLeft
\exxxxEBCDIC character in hex
\fClear*
\nEnter*
\panPA(n)*
\pfnnPF(nn)*
\rNewline
\tTab
\TBackTab
\uxxxxUnicode character in hex
\xxxxxUnicode character in hex

Note that the numeric values for the \e, \u and \x sequences can be abbreviated to 2 digits. Note also that EBCDIC codes greater than 255 and some Unicode character codes represent DBCS characters, which will work only if s3270 is built with DBCS support and the host allows DBCS input in the current field.

Note: The strings are in ASCII and converted to EBCDIC, so beware of inserting control codes.

There is also an alternate form of the String action, HexString, which is used to enter non-printing data. The argument to HexString is a string of hexadecimal digits, two per character. A leading 0x or 0X is optional. In 3270 mode, the hexadecimal data represent EBCDIC characters, which are entered into the current field. In NVT mode, the hexadecimal data represent ASCII characters, which are sent directly to the host.

The Script Action
This action causes s3270 to start a child process which can execute s3270 actions. Standard input and output from the child process are piped back to s3270. The Script action is fully documented in x3270-script(1).

Passthru

s3270 supports the Sun telnet-passthru service provided by the in.telnet-gw server. This allows outbound telnet connections through a firewall machine. When a p: is prepended to a hostname, s3270 acts much like the itelnet(1) command. It contacts the machine named internet-gateway at the port defined in /etc/services as telnet-passthru (which defaults to 3514). It then passes the requested hostname and port to the in.telnet-gw server.

Proxy

The -proxy option or the s3270.proxy resource causes s3270 to use a proxy server to connect to the host. The syntax of the option or resource is:

type:host[:port]

The supported values for type are:

Proxy TypeProtocolDefault Port
httpRFC 2817 HTTP tunnel (squid)3128
passthruSun in.telnet-gwnone
socks4SOCKS version 41080
socks5SOCKS version 5 (RFC 1928)1080
telnetNo protocol (just send connect host port)none

The special types socks4a and socks5d can also be used to force the proxy server to do the hostname resolution for the SOCKS protocol.

Resources

Certain s3270 options can be configured via resources. Resources are defined by -xrm options. The definitions are similar to X11 resources, and use a similar syntax. The resources available in s3270 are:

ResourceDefaultOptionPurpose
blankFillFalse-set blankFillBlank Fill mode
charsetbracket-charsetEBCDIC character set
dbcsCgcsgid Override DBCS CGCSGID
dsTraceFalse-traceData stream tracing
eof^D NVT-mode EOF character
erase^H NVT-mode erase character
extendedTrue Use 3270 extended data stream
eventTraceFalse-traceEvent tracing
icrnlFalse Map CR to NL on NVT-mode input
inlcrFalse Map NL to CR in NVT-mode input
intr^C NVT-mode interrupt character
kill^U NVT-mode kill character
lineWrapFalse-set lineWrapNVT line wrap mode
lnext^V NVT-mode lnext character
m3279(note 1)-model3279 (color) emulation
monoCaseFalse-set monoCaseMono-case mode
numericLockFalse Lock keyboard for numeric field error
oerrLockFalse Lock keyboard for input error
oversize -oversizeOversize screen dimensions
porttelnet-portNon-default TCP port
quit^\ NVT-mode quit character
rprnt^R NVT-mode reprint character
sbcsCgcsgid Override SBCS CGCSGID
secureFalse Disable "dangerous" options
termName(note 2)-tnTELNET terminal type string
traceDir/tmp Directory for trace files
traceFile(note 3)-tracefileFile for trace output
werase^W NVT-mode word-erase character

Note 1: m3279 defaults to False. It can be forced to True with the proper -model option.

Note 2: The default terminal type string is constructed from the model number, color emulation, and extended data stream modes. E.g., a model 2 with color emulation and the extended data stream option would be sent as IBM-3279-2-E. Note also that when TN3270E mode is used, the terminal type is always sent as 3278, but this does not affect color capabilities.

Note 3: The default trace file is x3trc.pid in the directory specified by the traceDir resource.

If more than one -xrm option is given for the same resource, the last one on the command line is used.

Files

/usr/local/lib/x3270/ibm_hosts

See Also

x3270-script(1), x3270(1), c3270(1), tcl3270(1), telnet(1), tn3270(1)
Data Stream Programmer's Reference, IBM GA23-0059
Character Set Reference, IBM GA27-3831
RFC 1576, TN3270 Current Practices
RFC 1646, TN3270 Extensions for LUname and Printer Selection
RFC 2355, TN3270 Enhancements

Copyrights

Copyright 1993-2016, Paul Mattes.
Copyright 2004-2005, Don Russell.
Copyright 2004, Dick Altenbern.
Copyright 1990, Jeff Sparkes.
Copyright 1989, Georgia Tech Research Corporation (GTRC), Atlanta, GA
30332.
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

*
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
*
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
*
Neither the names of Paul Mattes, Don Russell, Dick Altenbern, Jeff Sparkes, GTRC nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY PAUL MATTES, DON RUSSELL, DICK ALTENBERN, JEFF SPARKES AND GTRC "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, DON RUSSELL, DICK ALTENBERN, JEFF SPARKES OR GTRC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Version

s3270 3.5ga8

Referenced By

c3270(1), x3270(1), x3270if(1), x3270-script(1).

09 May 2016