我正在使用服务器向客户端发送shell脚本来制作一些程序。客户端获取代码并将其放入文件中,然后执行它。
添加功能:
void addScript(char *name,char *content){
int fd;
char path[BUFSIZ];
strcpy(path,"scripts/");
strcat(path,name);
strcat(path,".sh");
printf("file : %s\n",path);
fd = open(path,O_WRONLY|O_CREAT|O_TRUNC,S_IRWXU|S_IRGRP);
if(fd == -1){
printf("Error openning file !!");
return;
}
write(fd,content,strlen(content));
write(fd,"\n",1);
close(fd);
}
我有文件,但是当我尝试运行它时,exec给了我一个错误:
Exec failed : Exec format error
我在脚本上运行了file命令,它给了我:
mount.sh: Non-ISO extended-ASCII text
在手写的脚本(工作这个)上,我有:
diskUse.sh: POSIX shell script, ASCII text executable
当我使用我的功能创建文件时,我无法找到如何强制文件类型,有人会有想法吗?谢谢!
修改更多细节:
非工作文件的示例:
#!/bin/sh
mount
"滑稽"事情是,如果我用./mount.sh从我的shell(zsh)手动运行它,它会运行良好,但我有警告:
./mount.sh: line 1: #!/bin/sh: No such file or directory
但是:
$ ll /bin/sh
lrwxrwxrwx 1 root root 4 30 déc. 23:08 /bin/sh -> bash
Var内容是一个char *,通过网络发送。用户在Web界面中键入它,然后将其存储在SQLite3数据库中,然后通过网络发送。
答案 0 :(得分:0)
如果使用hexedit出现的不可打印的字符,现在可以使用。
谢谢大家!