Wiki
Download
Manual
Eggs
API
Tests
Bugs
show
edit
history
You can edit this page using
wiki syntax
for markup.
Article contents:
== tcl-expect Chicken scheme binding to libexpect Expect is a tool for automating interactive applications such as telnet, ftp, passwd, fsck, rlogin, tip, etc. Expect really makes this stuff trivial. Expect is also useful for testing these same applications. === Author Aydar Zarifullin === Repository [[https://github.com/iZarif/ckn-expect|https://github.com/iZarif/ckn-expect]] === Dependencies * Linux * libtcl * libexpect '''Note''': Windows is not supported. === Installing ==== Debian-based system 1. Install the dependencies apt install tcl-dev tcl-expect-dev 2. Tell the compiler where the Tcl header files are located by setting the CSC_OPTIONS environment variable CSC_OPTIONS="-I/usr/include/tcl" 3. Install this egg chicken-install tcl-expect ==== Arch-based system 1. Install the dependencies pacman -S expect 2. Determine the Expect version expect -version 3. Create a symlink ln -s /usr/lib/expect<version>/libexpect<version>.so /usr/lib/libexpect.so Where <version> is the number from the previous step 4. Install this egg chicken-install tcl-expect === Documentation <procedure>(call-with-process-io cmd proc)</procedure> Forks a new process and executes {{cmd}} via Bourne shell then call {{proc}} which should be a procedure of three arguments: the input, output, and PID of the sub-process. '''Note''': The input and output ports will not be closed if {{proc}} raises an error While it is possible to use {{read-line}} to read information from a process spawned by {{call-with-process-io}}, more convenient function are provided. <procedure>(expect in-port pattern)</procedure> The function waits until the output from a process matches the pattern, a specified time period has passed, or an EOF is seen. The first argument to the function is an in-port the second argument is a Tcl glob-style string pattern. Returns one of the following values * ok * eof * timeout * fullbuffer <procedure>(set-timeout secs)</procedure> Sets timeout for {{expect}} function. The default timeout period is 10 seconds. A value of -1 disables a timeout from occurring. A value of 0 causes the {{expect}} function to return immediately. === Example <enscript highlight="scheme"> (import (prefix tcl-expect #:expect) (chicken io)) (expect:call-with-process-io "bc" (lambda (in out pid) (expect:expect in "`warranty'") (display "20+12\n" out) (read-line in) (read-line in) (read-line in) (display (read-line in)))) </enscript> === Changelog * 0.1 Initial release === License Copyright 2021 Aydar Zarifullin. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. A full copy of the GPL license can be found at <http://www.gnu.org/licenses/>.
Description of your changes:
I would like to authenticate
Authentication
Username:
Password:
Spam control
What do you get when you multiply 8 by 4?