|
|
researchv10 Norman
#include <ipc.h>
#include "defs.h"
/*
* Perform a remote execution of a command.
*/
ipcexec(name, param, cmd)
char *name;
char *param;
char *cmd;
{
return _ipcexec(name, "dk", "exec", param, cmd);
}
ipcmesgexec(name, param, cmd)
char *name;
char *param;
char *cmd;
{
return _ipcexec(name, "dk", "mesgexec", param, cmd);
}
_ipcexec(name, def, service, param, cmd)
char *name;
char *service;
char *def;
char *param;
char *cmd;
{
int fd, len;
fd = ipcopen(ipcpath(name, def, service), param);
if (fd<0)
return -1;
if (ipclogin(fd)<0) {
close(fd);
return -1;
}
len = strlen(cmd)+1;
if (write(fd, cmd, len)!=len) {
errstr = "write error";
close(fd);
return -1;
}
return fd;
}
ipcrexec(name, param, cmd)
char *name;
char *param;
char *cmd;
{
int fd, n;
char nparam[512];
strcpy(nparam, "bsdauth ");
n = strlen(nparam);
strncat(nparam+n, param, sizeof(nparam)-n-1);
fd = ipcopen(ipcpath(name, "tcp", "shell"), nparam);
if (fd<0)
return -1;
if (ipcrogin(fd, cmd)<0) {
close(fd);
return -1;
}
return fd;
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.