guile-ssh.texi 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. \input texinfo
  2. @c -*-texinfo-*-
  3. @c %**start of header
  4. @setfilename guile-ssh.info
  5. @documentencoding UTF-8
  6. @settitle Guile-SSH Reference Manual
  7. @c %**end of header
  8. @include version.texi
  9. @copying
  10. This manual documents Guile-SSH version @value{VERSION}.
  11. Copyright (C) 2014, 2015, 2016, 2017 Artyom V. Poptsov
  12. Permission is granted to copy, distribute and/or modify this document
  13. under the terms of the GNU Free Documentation License, Version 1.3 or
  14. any later version published by the Free Software Foundation; with no
  15. Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
  16. copy of the license is included in the section entitled ``GNU Free
  17. Documentation License.''
  18. @end copying
  19. @dircategory The Algorithmic Language Scheme
  20. @direntry
  21. * Guile-SSH: (guile-ssh). Guile bindings to libssh.
  22. @end direntry
  23. @setchapternewpage odd
  24. @titlepage
  25. @sp 10
  26. @title Guile-SSH Reference Manual
  27. @subtitle For Guile-SSH @value{VERSION}
  28. @author Artyom V. Poptsov
  29. @page
  30. @vskip 0pt plus 1filll
  31. @vskip 0pt plus 1filll
  32. @insertcopying
  33. @end titlepage
  34. @finalout
  35. @headings double
  36. @ifnottex
  37. @node Top, Introduction, (dir), (dir)
  38. @top The Guile-SSH Reference Manual
  39. @insertcopying
  40. @sp 1
  41. @end ifnottex
  42. @menu
  43. * Introduction::
  44. * Installation::
  45. * API Reference::
  46. * Examples::
  47. * Acknowledgments::
  48. Appendices
  49. * GNU Free Documentation License:: The license of this manual.
  50. Indices
  51. * Type Index::
  52. * Procedure Index::
  53. * Concept Index::
  54. @end menu
  55. @contents
  56. @node Introduction
  57. @chapter Introduction
  58. Guile-SSH is a library that provides access to the @acronym{SSH}
  59. protocol for programs written in
  60. @url{https://www.gnu.org/software/guile/, GNU Guile}. It is a wrapper
  61. to the underlying @url{http://www.libssh.org/, libssh} library. This
  62. manual is partly based on libssh documentation.
  63. @section The goals of this (humble) project
  64. @quotation
  65. Most projects are humble, it's the combination that's interesting :-)
  66. @author Ludovic Courtès
  67. @end quotation
  68. Now let me explain what are the goals of the whole project. Aside from the
  69. fact that I am having lots of fun with the project itself (and the project is
  70. helping me to grow as a free software developer, many thanks to all advices
  71. and comments from the community!), there are practical goals that the project
  72. struggling to achieve.
  73. For me, the main goal is to provide convenient means to write truly
  74. distributed applications in my favourite programming language.
  75. Computers are getting cheaper and more and more ubiquitous, and so different
  76. kind of networks. In my opinion the question is -- how we are going to
  77. utilize those new computational resources? Using multi-core systems
  78. effectively may be tricky; fortunately some languages (such as Scheme/GNU
  79. Guile) already provide convenient API to utilize those systems. But what
  80. about systems that distributed over a network?
  81. I am dreaming of the times when using computer resources distributed over a
  82. network in GNU Guile will be as easy as using local ones. You should not be
  83. asking question ``how to do it?'' -- what you should be asking yourself is
  84. ``how can I use it?''
  85. But Guile-SSH itself is just a library; a tool that can be used to solve some
  86. problems (and, perhaps, to cause new ones ;-)). So, as was noted in the
  87. quotation above, it's the combination of projects that may lead to the most
  88. interesting results. With that said, I would love to see Guile-SSH used in
  89. another projects, and to hear positive (and negative) feedback from you.
  90. Happy hacking!
  91. - avp
  92. @node Installation
  93. @chapter Installation
  94. Guile-SSH sources are available from GitHub at
  95. @url{https://github.com/artyom-poptsov/guile-ssh/}. This section
  96. describes requirements of Guile-SSH and installation process.
  97. Guile-SSH depends on the following packages:
  98. @itemize
  99. @item @url{https://www.gnu.org/software/guile/, GNU Guile}, version 2.0.9 or later
  100. @item @url{http://www.libssh.org/, libssh}, version 0.6.4 or later
  101. @end itemize
  102. Get the sources of Guile-SSH from GitHub:
  103. @example
  104. $ git clone git@@github.com:artyom-poptsov/guile-ssh.git
  105. @end example
  106. Configure the sources:
  107. @example
  108. $ cd guile-ssh/
  109. $ autoreconf -if
  110. $ ./configure
  111. @end example
  112. Build and install the library:
  113. @example
  114. $ make
  115. $ make install
  116. @end example
  117. For a basic explanation of the installation of the package, see the
  118. @file{INSTALL} file.
  119. Please @strong{note} that you will need
  120. @url{https://www.gnu.org/software/automake/, Automake} version 1.12 or
  121. later to run self-tests with @command{make check} (but the library
  122. itself can be built with older Automake version such as 1.11).
  123. @strong{important} You probably want to call @command{configure} with
  124. the @option{--with-guilesitedir} option so that this package is
  125. installed in Guile's default path. But, if you don't know where your
  126. Guile site directory is, run @command{configure} without the option,
  127. and it will give you a suggestion.
  128. @node API Reference
  129. @chapter API Reference
  130. @menu
  131. * Sessions:: Session management
  132. * Auth:: Authentication procedures
  133. * Keys:: Public and private keys
  134. * Channels:: Channel manipulation procedures
  135. * Tunnels:: SSH tunnels
  136. * Remote Pipes:: Creating of input, output or bidirectional pipes to remote
  137. processes
  138. * Shell:: A high-level interface to remote shell built upon remote
  139. pipes
  140. * Logging:: Interface to the libssh logging
  141. * Version:: Get information about versions
  142. Guile-SSH Server API
  143. * Servers:: Creating and managing Guile-SSH servers
  144. * Messages:: Handling of messages
  145. SFTP
  146. * SFTP:: Guile-SSH SFTP client API.
  147. Distributed Computing
  148. * Distributed Forms::
  149. @end menu
  150. @include api-auth.texi
  151. @include api-channels.texi
  152. @include api-tunnels.texi
  153. @include api-sessions.texi
  154. @include api-keys.texi
  155. @include api-messages.texi
  156. @include api-servers.texi
  157. @include api-logging.texi
  158. @include api-version.texi
  159. @include api-dist.texi
  160. @include api-sftp.texi
  161. @include api-popen.texi
  162. @include api-shell.texi
  163. @include examples.texi
  164. @node Acknowledgments
  165. @chapter Acknowledgments
  166. The @url{http://www.libssh.org/, libssh} that is used by Guile-SSH is
  167. initially written by Aris Adamantiadis and being developed by the
  168. developer community. See AUTHORS file that comes along with libssh
  169. distribution for full authors list.
  170. Thanks to the following people who contributed to Guile-SSH
  171. through bug reports or patches:
  172. @itemize @bullet
  173. @item Ludovic Courtès @email{ludo@@gnu.org}
  174. @item David Thompson @email{davet@@gnu.org}
  175. @item SaffronSnail @url{https://github.com/SaffronSnail}
  176. @item David Kastrup @email{dak@@gnu.org>}
  177. @end itemize
  178. Thank you.
  179. @node GNU Free Documentation License
  180. @appendix GNU Free Documentation License
  181. @include fdl.texi
  182. @include indices.texi
  183. @bye