ref: 23e7a571724aa78dd33ffdde9da1c0fa330c3aae
parent: 79822e96dcd4a179a0663e6edb0e6c5dc9dc9d66
author: mkf <mkf@cloud9p.org>
date: Thu Jul 4 16:26:20 EDT 2024
rx: add ssh
--- a/sys/src/cmd/rx.c
+++ b/sys/src/cmd/rx.c
@@ -13,6 +13,7 @@
void rex(int, char*);
void rcpu(int, char*);
void tcpexec(int, char*, char*);
+void sshexec(char*, char*);
int call(char *, char*, char*, char**);
char *buildargs(char*[]);
int send(int);
@@ -70,6 +71,14 @@
rex(fd, args);
close(fd);
+ /* if there's an ssh port, try that */
+ fd = call("tcp", host, "ssh", &addr);
+ if(fd >= 0){
+ close(fd);
+ sshexec(host, args);
+ /* falls through if no ssh */
+ }
+
/* specific attempts */
fd = call("tcp", host, "shell", &addr);
if(fd >= 0)
@@ -203,8 +212,28 @@
error("write error", 0);
}
sleep(250);
- postnote(PNPROC, kid, note);/**/
+ postnote(PNPROC, kid, note);
exits(0);
+}
+
+void
+sshexec(char *host, char *cmd)
+{
+ char *argv[10];
+ int n;
+
+ n = 0;
+ argv[n++] = "ssh";
+ if(!returns)
+ argv[n++] = "-r";
+ if(ruser){
+ argv[n++] = "-u";
+ argv[n++] = ruser;
+ }
+ argv[n++] = host;
+ argv[n++] = cmd;
+ argv[n] = 0;
+ exec("/bin/ssh", argv);
}
int
--
⑨