shithub: front

Download patch

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
--