|
|
1.1 root 1: #include <ipc.h>
2: #include "defs.h"
3:
4: /*
5: * Perform a remote execution of a command.
6: */
7: ipcexec(name, param, cmd)
8: char *name;
9: char *param;
10: char *cmd;
11: {
12: return _ipcexec(name, "dk", "exec", param, cmd);
13: }
14:
15: ipcmesgexec(name, param, cmd)
16: char *name;
17: char *param;
18: char *cmd;
19: {
20: return _ipcexec(name, "dk", "mesgexec", param, cmd);
21: }
22:
23: _ipcexec(name, def, service, param, cmd)
24: char *name;
25: char *service;
26: char *def;
27: char *param;
28: char *cmd;
29: {
30: int fd, len;
31:
32: fd = ipcopen(ipcpath(name, def, service), param);
33: if (fd<0)
34: return -1;
35: if (ipclogin(fd)<0) {
36: close(fd);
37: return -1;
38: }
39: len = strlen(cmd)+1;
40: if (write(fd, cmd, len)!=len) {
41: errstr = "write error";
42: close(fd);
43: return -1;
44: }
45: return fd;
46: }
47:
48: ipcrexec(name, param, cmd)
49: char *name;
50: char *param;
51: char *cmd;
52: {
53: int fd, n;
54: char nparam[512];
55:
56: strcpy(nparam, "bsdauth ");
57: n = strlen(nparam);
58: strncat(nparam+n, param, sizeof(nparam)-n-1);
59: fd = ipcopen(ipcpath(name, "tcp", "shell"), nparam);
60: if (fd<0)
61: return -1;
62: if (ipcrogin(fd, cmd)<0) {
63: close(fd);
64: return -1;
65: }
66: return fd;
67: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.