Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

replutil

npm deno land deno doc Test npm version

REPL (Read-eval-print loop) utilities.

Usage

Use Sender to send message to REPL and Receiver to receive message from REPL.

SSH
import { Receiver, Sender } from "./mod.ts";

const proc = Deno.run({
  cmd: ["ssh", "-tt", "localhost", "/bin/sh"],
  stdin: "piped",
  stdout: "piped",
});
const receiver = new Receiver(proc.stdout, {
  pattern: /.*\$ $/,
});
const sender = new Sender(proc.stdin);
await receiver.recv();
await sender.send("ls -al\n");
const received = await receiver.recv();
await sender.send("exit\n");
await proc.status();
proc.close();

console.log("-".repeat(80));
console.log(received);
console.log("-".repeat(80));
Telnet
import { Receiver, Sender } from "./mod.ts";

const username = "johntitor";
const password = "steinsgate";

const proc = Deno.run({
  cmd: ["telnet", "localhost"],
  stdin: "piped",
  stdout: "piped",
});
const receiver = new Receiver(proc.stdout, {
  pattern: /.* % /,
});
const sender = new Sender(proc.stdin);

await receiver.recv(/login: $/);
await sender.send(`${username}\n`);

await receiver.recv(/Password:$/);
await sender.send(`${password}\n`);

await receiver.recv();
await sender.send("ls -al\n");
const received = await receiver.recv();
await sender.send("exit\n");
await proc.status();
proc.close();

console.log("-".repeat(80));
console.log(received);
console.log("-".repeat(80));

Development

Lint code like:

make lint

Format code like

make fmt

Check types like

make type-check

Run tests like:

make test

License

The code follows MIT license written in LICENSE. Contributors need to agree that any modifications sent in this repository follow the license.

Releases

Packages

Used by

Contributors

Languages