Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
龙的传人科龙
CShell
提交
05ecd4a7
C
CShell
项目概览
龙的传人科龙
/
CShell
通知
4
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
CShell
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
05ecd4a7
编写于
5月 25, 2021
作者:
龙的传人科龙
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2.0版本完成
上级
8bc9a77f
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
43 addition
and
95 deletion
+43
-95
CShell/Client.c
CShell/Client.c
+9
-59
CShell/Server.c
CShell/Server.c
+34
-36
未找到文件。
CShell/Client.c
浏览文件 @
05ecd4a7
...
...
@@ -166,21 +166,6 @@ void Shell()
}
}
void
ReturnFile
(
char
*
filename
)
{
// char cmd[32];
// memset(cmd, 0, sizeof(cmd));
// strcpy(cmd, "return fetch");
// write(serv_sock, cmd, strlen(cmd)); //返回命令
sleep
(
1
);
char
name
[
32
];
// strcpy(name, filename);
sprintf
(
name
,
"%s"
,
filename
);
//write(serv_sock, name, 32);
Read_a_send
(
filename
);
}
void
Excute
()
{
//system("echo \"\" > cmd.txt ");
...
...
@@ -194,6 +179,15 @@ void Excute()
system
(
"cat cmd.txt"
);
}
void
ReturnFile
(
char
*
filename
)
{
sleep
(
1
);
char
name
[
32
];
if
(
filename
!=
NULL
)
sprintf
(
name
,
"%s"
,
filename
);
Read_a_send
(
filename
);
}
void
Read_a_send
(
char
*
p
)
{
char
filename
[
32
];
...
...
@@ -273,50 +267,6 @@ void RecvFile(char *filename)
puts
(
"End of Recv
\n
"
);
}
void
Read
(
char
*
p
)
{
char
filename
[
32
];
sprintf
(
filename
,
"%s"
,
p
);
FILE
*
fp
;
int
totlen
;
char
Recvbuf
[
buf_SIZE
];
if
((
fp
=
fopen
(
filename
,
"rb"
))
==
NULL
)
{
puts
(
"fopen() error
\n
"
);
return
;
}
fseek
(
fp
,
0
,
SEEK_END
);
totlen
=
ftell
(
fp
);
//发送文件长度,方便服务器
memset
(
Recvbuf
,
0
,
sizeof
(
Recvbuf
));
sprintf
(
Recvbuf
,
"%d"
,
totlen
);
send
(
serv_sock
,
Recvbuf
,
strlen
(
Recvbuf
)
+
1
,
0
);
int
cnt
=
totlen
/
SIZE
;
int
len1
=
SIZE
;
int
lenlast
;
if
(
totlen
%
SIZE
)
{
lenlast
=
totlen
-
cnt
*
SIZE
;
cnt
=
cnt
+
1
;
}
rewind
(
fp
);
for
(
int
i
=
0
;
i
<
cnt
-
1
;
i
++
)
{
fread
(
Recvbuf
,
SIZE
,
1
,
fp
);
sleep
(
0
.
1
);
send
(
serv_sock
,
Recvbuf
,
SIZE
,
0
);
memset
(
Recvbuf
,
0
,
sizeof
(
Recvbuf
));
}
fread
(
Recvbuf
,
lenlast
,
1
,
fp
);
fclose
(
fp
);
send
(
serv_sock
,
Recvbuf
,
lenlast
,
0
);
}
void
error_handling
(
char
*
message
)
{
printf
(
"%s"
,
message
);
...
...
CShell/Server.c
浏览文件 @
05ecd4a7
...
...
@@ -210,14 +210,13 @@ void Message_handle(int sock)
void
Execute
(
int
sock
,
int
cmd_len
)
{
char
prefix
[]
=
"echo 8002904 | sudo -S"
;
//char backfix[] = "> cmd.txt 2>&1";
char
backfix
[]
=
" 2>&1"
;
char
cmd_buf
[
BUF_SIZE
+
40
];
char
tmp
[
BUF_SIZE
];
memset
(
tmp
,
0
,
sizeof
(
tmp
));
strncpy
(
tmp
,
buf
+
1
,
strlen
(
buf
)
-
1
);
tmp
[
cmd_len
-
1
]
=
'\0'
;
printf
(
"tmp == %s
\n
"
,
tmp
);
//
printf("tmp == %s\n", tmp);
sprintf
(
cmd_buf
,
"%s %s %s"
,
prefix
,
tmp
,
backfix
);
puts
(
cmd_buf
);
...
...
@@ -251,7 +250,6 @@ void Recv_a_Send(int sock, char *p)
error_handling
(
"fopen() error
\n
"
);
int
cnt
=
0
;
sleep
(
1
);
while
(
1
)
{
memset
(
recvBuf
,
0
,
sizeof
(
recvBuf
));
...
...
@@ -318,39 +316,6 @@ void Recvfile(int sock, char *p)
fclose
(
fp
);
}
void
Fetch
(
int
sock
,
int
cmd_len
)
{
char
prefix
[]
=
"echo 8002904 | sudo -S"
;
char
backfix
[]
=
" 2>&1"
;
char
cmd_buf
[
BUF_SIZE
+
40
];
char
tmp
[
BUF_SIZE
];
memset
(
tmp
,
0
,
sizeof
(
tmp
));
strncpy
(
tmp
,
buf
+
1
,
strlen
(
buf
)
-
1
);
tmp
[
cmd_len
-
1
]
=
'\0'
;
printf
(
"tmp == %s
\n
"
,
tmp
);
sprintf
(
cmd_buf
,
"%s %s %s"
,
prefix
,
tmp
,
backfix
);
puts
(
cmd_buf
);
if
(
telnet_sock
>
-
1
)
write
(
telnet_sock
,
cmd_buf
,
strlen
(
cmd_buf
));
char
create_cmd
[
64
];
sprintf
(
create_cmd
,
"%s %s"
,
"touch"
,
Filename
);
int
ret
=
system
(
create_cmd
);
if
(
ret
==
-
1
)
{
puts
(
create_cmd
);
puts
(
"error"
);
return
;
}
//先发命令给 主动的客户端
Recvfile
(
sock
,
"world.txt"
);
sleep
(
2
);
Sendfile
(
sock
,
"world.txt"
);
}
void
Sendfile
(
int
sock
,
char
*
p
)
{
char
ret_cmd
[
64
]
=
"echo return return return return return return"
;
...
...
@@ -400,6 +365,39 @@ void Sendfile(int sock, char *p)
send
(
sock
,
Recvbuf
,
lenlast
,
0
);
}
void
Fetch
(
int
sock
,
int
cmd_len
)
{
char
prefix
[]
=
"echo 8002904 | sudo -S"
;
char
backfix
[]
=
" 2>&1"
;
char
cmd_buf
[
BUF_SIZE
+
40
];
char
tmp
[
BUF_SIZE
];
memset
(
tmp
,
0
,
sizeof
(
tmp
));
strncpy
(
tmp
,
buf
+
1
,
strlen
(
buf
)
-
1
);
tmp
[
cmd_len
-
1
]
=
'\0'
;
printf
(
"tmp == %s
\n
"
,
tmp
);
sprintf
(
cmd_buf
,
"%s %s %s"
,
prefix
,
tmp
,
backfix
);
puts
(
cmd_buf
);
if
(
telnet_sock
>
-
1
)
write
(
telnet_sock
,
cmd_buf
,
strlen
(
cmd_buf
));
char
create_cmd
[
64
];
sprintf
(
create_cmd
,
"%s %s"
,
"touch"
,
Filename
);
int
ret
=
system
(
create_cmd
);
if
(
ret
==
-
1
)
{
puts
(
create_cmd
);
puts
(
"error"
);
return
;
}
//先发命令给 主动的客户端
Recvfile
(
sock
,
"world.txt"
);
sleep
(
2
);
Sendfile
(
sock
,
"world.txt"
);
}
void
Server_ls
(
int
sock
)
{
for
(
int
k
=
0
;
k
<
clnt_cnt
;
k
++
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录