awk和sed命令

在学习awk和sed首先了解一下linux一些常见命令grep "string" /....就是在某个文件或者目录下搜索某个字符串关键字,如果加上-n的话则会显示对应的行数。
例如要获取/etc/passwd中的有root的一行。

1
grep -n "root" /etc/passwd

shell常见易错

直接进入正题

常见的一个错误就是赋值,简单举例子来说

1
str1="This is a sentence."

赋值的时候不能带空格。

在下面这种情况就需要带,不然的话会被当做一个整体字符串来看

1
2
expr 10 + 2
//这里顺便提一嘴,如果用expr作乘法运算比如: expr 10 * 2,是错误的,在shell中这里的星号会被认为和ls *.sh中的星号作用一样,所以需要加转义字符expr 10 \* 2

二叉树递归遍历

要想递归遍历二叉树,我们的思路就是

创建二叉树结点类型
二叉树递归创建
二叉树遍历
创建二叉树结点类型:

1
2
3
4
5
6
typedef struct bitree{
int n;
data_type data;
struct bitree *lchild;
struct bitree *rchild;
}bitree_t;

二叉树递归创建:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
bitree_t *create_binary_tree(int n)//这里的n用来从初始编号  
{
bitree_t *root=NULL;
root=(bitree_t *)malloc(sizeof(bitree_t));
if(NULL==root)
{
printf("malloc failed!!!\n");
return NULL;
}
memset(root,0,sizeof(bitree_t));
root->n=n;
printf("please input %d node data\n",n);
scanf("%c",&root->data);
if(2*n<=N)
{
root->lchild=create_binary_tree(2*n);
}
if((2*n+1)<=N)
{
root->rchild=create_binary_tree(2*n+1);
}
return root;

}

二叉树的遍历:

1
2
3
4
5
6
7
8
9
10
//先序遍历:
void pre_order(bitree_t *root)
{
if(NULL==root)
return;
printf("%d : %c",root->n,root->data);
pre_order(root->lchild);
pre_order(root->rchild);

}

中序和后序是一样的道理,注意我们创建结点的时候实际上是前序创建的,所以要前序输入。

校园网

早在之前就想着,为什么要限制学生上网,而且是一个设备一号,不过无所谓了,我认为大学生应该多点自由。
学校使用的是某澜,虽然不是用的网页认证,是客户端认证,不过抓包后发现非常简单,核心思想还是通过抓取提交的信息然后提交接口。
如果想要自己再做一个客户端类型,或者python或者js或sh的脚本类型,那么就需要对密码加密进行破解,在网页端认证抓取的信息中找到关键信息password就能发现加密的方式,一步一步找下去就能知道规律,不过本人现在是自己用,所以不需要破解加密方式,直接拿加密后的信息提交给接口就行。

刷好openwrt后ssh进后台,然后curl模拟登录请求,继而模拟登出请求,然后用crontab -e设置定时命令就行,经过搜索发现大概17个小时左右某澜会强制下线一次,那么每隔12小时执行一次sh即可
成功示例
成功事例2