You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
482 lines
11 KiB
482 lines
11 KiB
'\" |
|
'\" Generated from file '_module_sshrun-0\&.1\&.0\&.tm\&.man' by tcllib/doctools with format 'nroff' |
|
'\" Copyright (c) 2009 |
|
'\" |
|
.TH "shellspy_module_punk::sshrun" 0 0\&.1\&.0 doc "punk::sshrun tclssh clone" |
|
.\" The -*- nroff -*- definitions below are for supplemental macros used |
|
.\" in Tcl/Tk manual entries. |
|
.\" |
|
.\" .AP type name in/out ?indent? |
|
.\" Start paragraph describing an argument to a library procedure. |
|
.\" type is type of argument (int, etc.), in/out is either "in", "out", |
|
.\" or "in/out" to describe whether procedure reads or modifies arg, |
|
.\" and indent is equivalent to second arg of .IP (shouldn't ever be |
|
.\" needed; use .AS below instead) |
|
.\" |
|
.\" .AS ?type? ?name? |
|
.\" Give maximum sizes of arguments for setting tab stops. Type and |
|
.\" name are examples of largest possible arguments that will be passed |
|
.\" to .AP later. If args are omitted, default tab stops are used. |
|
.\" |
|
.\" .BS |
|
.\" Start box enclosure. From here until next .BE, everything will be |
|
.\" enclosed in one large box. |
|
.\" |
|
.\" .BE |
|
.\" End of box enclosure. |
|
.\" |
|
.\" .CS |
|
.\" Begin code excerpt. |
|
.\" |
|
.\" .CE |
|
.\" End code excerpt. |
|
.\" |
|
.\" .VS ?version? ?br? |
|
.\" Begin vertical sidebar, for use in marking newly-changed parts |
|
.\" of man pages. The first argument is ignored and used for recording |
|
.\" the version when the .VS was added, so that the sidebars can be |
|
.\" found and removed when they reach a certain age. If another argument |
|
.\" is present, then a line break is forced before starting the sidebar. |
|
.\" |
|
.\" .VE |
|
.\" End of vertical sidebar. |
|
.\" |
|
.\" .DS |
|
.\" Begin an indented unfilled display. |
|
.\" |
|
.\" .DE |
|
.\" End of indented unfilled display. |
|
.\" |
|
.\" .SO ?manpage? |
|
.\" Start of list of standard options for a Tk widget. The manpage |
|
.\" argument defines where to look up the standard options; if |
|
.\" omitted, defaults to "options". The options follow on successive |
|
.\" lines, in three columns separated by tabs. |
|
.\" |
|
.\" .SE |
|
.\" End of list of standard options for a Tk widget. |
|
.\" |
|
.\" .OP cmdName dbName dbClass |
|
.\" Start of description of a specific option. cmdName gives the |
|
.\" option's name as specified in the class command, dbName gives |
|
.\" the option's name in the option database, and dbClass gives |
|
.\" the option's class in the option database. |
|
.\" |
|
.\" .UL arg1 arg2 |
|
.\" Print arg1 underlined, then print arg2 normally. |
|
.\" |
|
.\" .QW arg1 ?arg2? |
|
.\" Print arg1 in quotes, then arg2 normally (for trailing punctuation). |
|
.\" |
|
.\" .PQ arg1 ?arg2? |
|
.\" Print an open parenthesis, arg1 in quotes, then arg2 normally |
|
.\" (for trailing punctuation) and then a closing parenthesis. |
|
.\" |
|
.\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. |
|
.if t .wh -1.3i ^B |
|
.nr ^l \n(.l |
|
.ad b |
|
.\" # Start an argument description |
|
.de AP |
|
.ie !"\\$4"" .TP \\$4 |
|
.el \{\ |
|
. ie !"\\$2"" .TP \\n()Cu |
|
. el .TP 15 |
|
.\} |
|
.ta \\n()Au \\n()Bu |
|
.ie !"\\$3"" \{\ |
|
\&\\$1 \\fI\\$2\\fP (\\$3) |
|
.\".b |
|
.\} |
|
.el \{\ |
|
.br |
|
.ie !"\\$2"" \{\ |
|
\&\\$1 \\fI\\$2\\fP |
|
.\} |
|
.el \{\ |
|
\&\\fI\\$1\\fP |
|
.\} |
|
.\} |
|
.. |
|
.\" # define tabbing values for .AP |
|
.de AS |
|
.nr )A 10n |
|
.if !"\\$1"" .nr )A \\w'\\$1'u+3n |
|
.nr )B \\n()Au+15n |
|
.\" |
|
.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n |
|
.nr )C \\n()Bu+\\w'(in/out)'u+2n |
|
.. |
|
.AS Tcl_Interp Tcl_CreateInterp in/out |
|
.\" # BS - start boxed text |
|
.\" # ^y = starting y location |
|
.\" # ^b = 1 |
|
.de BS |
|
.br |
|
.mk ^y |
|
.nr ^b 1u |
|
.if n .nf |
|
.if n .ti 0 |
|
.if n \l'\\n(.lu\(ul' |
|
.if n .fi |
|
.. |
|
.\" # BE - end boxed text (draw box now) |
|
.de BE |
|
.nf |
|
.ti 0 |
|
.mk ^t |
|
.ie n \l'\\n(^lu\(ul' |
|
.el \{\ |
|
.\" Draw four-sided box normally, but don't draw top of |
|
.\" box if the box started on an earlier page. |
|
.ie !\\n(^b-1 \{\ |
|
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
|
.\} |
|
.el \}\ |
|
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
|
.\} |
|
.\} |
|
.fi |
|
.br |
|
.nr ^b 0 |
|
.. |
|
.\" # VS - start vertical sidebar |
|
.\" # ^Y = starting y location |
|
.\" # ^v = 1 (for troff; for nroff this doesn't matter) |
|
.de VS |
|
.if !"\\$2"" .br |
|
.mk ^Y |
|
.ie n 'mc \s12\(br\s0 |
|
.el .nr ^v 1u |
|
.. |
|
.\" # VE - end of vertical sidebar |
|
.de VE |
|
.ie n 'mc |
|
.el \{\ |
|
.ev 2 |
|
.nf |
|
.ti 0 |
|
.mk ^t |
|
\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' |
|
.sp -1 |
|
.fi |
|
.ev |
|
.\} |
|
.nr ^v 0 |
|
.. |
|
.\" # Special macro to handle page bottom: finish off current |
|
.\" # box/sidebar if in box/sidebar mode, then invoked standard |
|
.\" # page bottom macro. |
|
.de ^B |
|
.ev 2 |
|
'ti 0 |
|
'nf |
|
.mk ^t |
|
.if \\n(^b \{\ |
|
.\" Draw three-sided box if this is the box's first page, |
|
.\" draw two sides but no top otherwise. |
|
.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
|
.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
|
.\} |
|
.if \\n(^v \{\ |
|
.nr ^x \\n(^tu+1v-\\n(^Yu |
|
\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c |
|
.\} |
|
.bp |
|
'fi |
|
.ev |
|
.if \\n(^b \{\ |
|
.mk ^y |
|
.nr ^b 2 |
|
.\} |
|
.if \\n(^v \{\ |
|
.mk ^Y |
|
.\} |
|
.. |
|
.\" # DS - begin display |
|
.de DS |
|
.RS |
|
.nf |
|
.sp |
|
.. |
|
.\" # DE - end display |
|
.de DE |
|
.fi |
|
.RE |
|
.sp |
|
.. |
|
.\" # SO - start of list of standard options |
|
.de SO |
|
'ie '\\$1'' .ds So \\fBoptions\\fR |
|
'el .ds So \\fB\\$1\\fR |
|
.SH "STANDARD OPTIONS" |
|
.LP |
|
.nf |
|
.ta 5.5c 11c |
|
.ft B |
|
.. |
|
.\" # SE - end of list of standard options |
|
.de SE |
|
.fi |
|
.ft R |
|
.LP |
|
See the \\*(So manual entry for details on the standard options. |
|
.. |
|
.\" # OP - start of full description for a single option |
|
.de OP |
|
.LP |
|
.nf |
|
.ta 4c |
|
Command-Line Name: \\fB\\$1\\fR |
|
Database Name: \\fB\\$2\\fR |
|
Database Class: \\fB\\$3\\fR |
|
.fi |
|
.IP |
|
.. |
|
.\" # CS - begin code excerpt |
|
.de CS |
|
.RS |
|
.nf |
|
.ta .25i .5i .75i 1i |
|
.. |
|
.\" # CE - end code excerpt |
|
.de CE |
|
.fi |
|
.RE |
|
.. |
|
.\" # UL - underline word |
|
.de UL |
|
\\$1\l'|0\(ul'\\$2 |
|
.. |
|
.\" # QW - apply quotation marks to word |
|
.de QW |
|
.ie '\\*(lq'"' ``\\$1''\\$2 |
|
.\"" fix emacs highlighting |
|
.el \\*(lq\\$1\\*(rq\\$2 |
|
.. |
|
.\" # PQ - apply parens and quotation marks to word |
|
.de PQ |
|
.ie '\\*(lq'"' (``\\$1''\\$2)\\$3 |
|
.\"" fix emacs highlighting |
|
.el (\\*(lq\\$1\\*(rq\\$2)\\$3 |
|
.. |
|
.\" # QR - quoted range |
|
.de QR |
|
.ie '\\*(lq'"' ``\\$1''\\-``\\$2''\\$3 |
|
.\"" fix emacs highlighting |
|
.el \\*(lq\\$1\\*(rq\\-\\*(lq\\$2\\*(rq\\$3 |
|
.. |
|
.\" # MT - "empty" string |
|
.de MT |
|
.QW "" |
|
.. |
|
.BS |
|
.SH NAME |
|
shellspy_module_punk::sshrun \- Tcl procedures to execute tcl scripts in remote hosts |
|
.SH SYNOPSIS |
|
package require \fBpunk::sshrun \fR |
|
.sp |
|
connect \fIargs\fR |
|
.sp |
|
disconnect \fIhost\fR |
|
.sp |
|
push \fIhost\fR \fIscript\fR |
|
.sp |
|
send \fIhost\fR |
|
.sp |
|
send_exit \fIhost\fR |
|
.sp |
|
pop_line \fIhost\fR \fIline_varname\fR |
|
.sp |
|
pop_all \fIhost\fR \fIoutput_varname\fR |
|
.sp |
|
pop_read \fIhost\fR \fInumbytes\fR \fIoutput_varname\fR |
|
.sp |
|
hfileevent \fIhost\fR \fIreadable_writable\fR \fIscript\fR |
|
.sp |
|
hconfigure \fIhost\fR \fIargs\fR |
|
.sp |
|
rexec \fIhost\fR \fIscript\fR \fIoutput_varname\fR |
|
.sp |
|
get_filehandle \fIhost\fR |
|
.sp |
|
.BE |
|
.SH DESCRIPTION |
|
.PP |
|
This is a clone of tclssh by Jose F\&. Nieves |
|
.PP |
|
The original repo is at: https://bitbucket\&.org/noaaport/tclssh/src/master/ |
|
.PP |
|
This version is namespaced under punk::sshrun specifically for the Punk shell project - and may lag the original project or diverge\&. |
|
.PP |
|
You are encouraged to use the original Tclssh source from the above URL for your own projects |
|
.SH OVERVIEW |
|
.PP |
|
overview of punk::sshrun |
|
.PP |
|
SYNOPSIS |
|
.PP |
|
package require punk::sshrun |
|
.PP |
|
- |
|
.PP |
|
punk::sshrun::connect [-t <tclsh_name>] [-- <ssh_options>] [<user>@]<host> |
|
.PP |
|
Defaults: -t tclsh |
|
.SS CONCEPTS |
|
.PP |
|
- |
|
.SS DEPENDENCIES |
|
.PP |
|
packages used by punk::sshrun |
|
.IP \(bu |
|
\fBTcl 8\&.6\fR |
|
.IP \(bu |
|
\fBcmdline\fR |
|
.PP |
|
.SH API |
|
.SS "NAMESPACE PUNK::SSHRUN::CLASS" |
|
.PP |
|
class definitions |
|
.PP |
|
.SS "NAMESPACE PUNK::SSHRUN" |
|
.PP |
|
Core API functions for punk::sshrun |
|
.TP |
|
connect \fIargs\fR |
|
.sp |
|
Must be called first\&. |
|
.sp |
|
This proc opens an io channel to the tclsh in the remote host (via ssh) that is kept in an internal variable for subsequent use\&. |
|
.sp |
|
The file handle can be retrieved if desired through the command: get_filehandle {host} |
|
.TP |
|
disconnect \fIhost\fR |
|
.sp |
|
Must be called last\&. Closes the filehandle opened by connect\&. |
|
.TP |
|
push \fIhost\fR \fIscript\fR |
|
.sp |
|
<script> can be any tcl code\&. |
|
.sp |
|
For example, if the remote host is named "diablo" |
|
.CS |
|
|
|
|
|
ssh::push "diablo" "exec date" |
|
ssh::push "diablo" "exec uname -a" |
|
|
|
.CE |
|
.sp |
|
The commands are note executed immediately\&. Instead, the "push" proc simply accumulates them in a list that is sent to the host when the "send" procedure is executed\&. |
|
.sp |
|
Each push proc inserts the newline '\\n' character after each <script> |
|
.sp |
|
In the above example\&. Internally, each <script> is a member of a list, and when the "send" proc is invoked the entire script is constructed as a "join <list> \\n |
|
.TP |
|
send \fIhost\fR |
|
.sp |
|
This proc does the equivalent of a |
|
.CS |
|
|
|
|
|
puts <filehandle> [join <script_list> \\n] |
|
flush <filehandle> |
|
|
|
.CE |
|
.TP |
|
send_exit \fIhost\fR |
|
.sp |
|
This proc is similar to the above, but it "pushes" an exit command at the end of the script\&. The proc does the equivalent of |
|
.CS |
|
|
|
|
|
ssh::push <host> "exit" |
|
ssh::send <host> |
|
|
|
.CE |
|
.sp |
|
The net effect if this is that the remote host's tclsh will exit, so that the filehandle receives an eof and we can use |
|
.CS |
|
|
|
|
|
[read <filehandle>] |
|
|
|
.CE |
|
.sp |
|
to read the entire output at once (see the pop proc below) |
|
.TP |
|
pop_line \fIhost\fR \fIline_varname\fR |
|
.sp |
|
After executing a "send", this can be used to read one line of output\&. The proc does the equivalent of |
|
.CS |
|
|
|
|
|
[gets <filehandle> line] |
|
|
|
.CE |
|
.TP |
|
pop_all \fIhost\fR \fIoutput_varname\fR |
|
.sp |
|
This proc does the equivalent of |
|
.CS |
|
|
|
|
|
while {[pop_line $host line] >=0} { |
|
puts $line; |
|
} |
|
|
|
.CE |
|
.sp |
|
but all the output is returned as one string in output_varname\&. |
|
.sp |
|
It should be used only when we know that the remote host's tclsh will exit, so that the above code will detect the eof and exit |
|
.sp |
|
(see the send_exit proc above) |
|
.sp |
|
The function returns the number of lines read (0 if nothing is read before encoutering eof) |
|
.TP |
|
pop_read \fIhost\fR \fInumbytes\fR \fIoutput_varname\fR |
|
.sp |
|
Returns: numbytes read\&. If numbytes is not positive, then read is called without the numbytes argument\&. |
|
.TP |
|
hfileevent \fIhost\fR \fIreadable_writable\fR \fIscript\fR |
|
.sp |
|
Equivalent to: |
|
.CS |
|
|
|
|
|
fileevent <filehandle> $readable_writable $script |
|
|
|
.CE |
|
.TP |
|
hconfigure \fIhost\fR \fIargs\fR |
|
.TP |
|
rexec \fIhost\fR \fIscript\fR \fIoutput_varname\fR |
|
.sp |
|
shortcut for: |
|
.CS |
|
|
|
|
|
ssh::rexec_nopop $host $script |
|
ssh::pop_all $host outputvar |
|
|
|
.CE |
|
.TP |
|
get_filehandle \fIhost\fR |
|
.PP |
|
.SS "NAMESPACE PUNK::SSHRUN::LIB" |
|
.PP |
|
Secondary functions that are part of the API |
|
.PP |
|
.SH INTERNAL |
|
.SS "NAMESPACE PUNK::SSHRUN::SYSTEM" |
|
.PP |
|
Internal functions that are not part of the API |
|
.SH KEYWORDS |
|
module, ssh |
|
.SH COPYRIGHT |
|
.nf |
|
Copyright (c) 2009 |
|
|
|
.fi
|
|
|