C 将文件写为可执行 ASCII
C write file as executable ASCII
我正在制作一些程序,服务器向客户端发送 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 failed : Exec format error
我在脚本上 运行 文件命令,它给了我:
mount.sh: Non-ISO extended-ASCII text
而在手写脚本(使用这个)上我有:
diskUse.sh: POSIX shell script, ASCII text executable
当我用我的函数创建文件时,我找不到如何强制文件类型,有人知道吗?谢谢!
编辑更多细节:
非工作文件示例:
#!/bin/sh
mount
"Funny" 如果我用 ./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 数据库中,然后通过网络发送。
有不可打印的字符出现在 hexedit 中,现在有效。
谢谢大家!
我正在制作一些程序,服务器向客户端发送 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 failed : Exec format error
我在脚本上 运行 文件命令,它给了我:
mount.sh: Non-ISO extended-ASCII text
而在手写脚本(使用这个)上我有:
diskUse.sh: POSIX shell script, ASCII text executable
当我用我的函数创建文件时,我找不到如何强制文件类型,有人知道吗?谢谢!
编辑更多细节:
非工作文件示例:
#!/bin/sh
mount
"Funny" 如果我用 ./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 数据库中,然后通过网络发送。
有不可打印的字符出现在 hexedit 中,现在有效。
谢谢大家!