分类 Linux系统运维 下的文章

网络中硬件设备简介

看了一段时间的网络,我才发现我连一些基本的硬件设备都不是很清楚,都是很朦朦胧胧的概念,趁这里做一些相关的笔记看,巩固下。

传输介质


直通线(Straight-through):双绞线两端接入RJ-45(水晶头)的线序相同。

交叉线(Crossover):双绞线两端接入RJ-45(水晶头)的线序相反。

- 阅读剩余部分 -

子网划分

前面介绍了IP地址的分类,这里再介绍下子网。子网的出现主要是为了合理的利用IP,减少网络流量。在同一个子网里面,数据的流通是直接通过MAC+ARP进行访问的。但是不同的子网就相当于不同的网段,必须通过三层路由进行转发。这里简单的介绍些,系统的知识很多。子网说简单点,就是把IP地址的主机位借走几位当作网络位,那么就可以隔离出更多的小网络,每个小网络有自己的通信。举个例子,假设一个公司使用的IP范围是172.16.0.0/16,现在要求划分出13个网络,那么划分的方法是,假设划分N个子网,必须保证2^N >= 13,N=4,就是划分16个子网,这时候N=4本来是主机位,但是被网络位借走了,172.16.0.0/20,主机位变成了12位子(2^12-2个节点肯定是绰绰有余的)。前面介绍了主机位全为0的就是网络号,而主机位全为1的就是网段的广播地址。

- 阅读剩余部分 -

linux grep命令 <转>

1.作用


Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

2.格式


grep [options]

3.主要参数


[options]主要参数:
-c:只输出匹配行的计数。
-I :不区分大小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l  :查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及行号。
-s :不显示不存在或无匹配文本的错误信息。
-v :显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
\   : 忽略正则表达式中特殊字符的原有含义。
^  :匹配正则表达式的开始行。
$   : 匹配正则表达式的结束行
\< :从匹配正则表达式的行开始。
\> :到匹配正则表达式的行结束。
[ ] :单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
。 :所有的单个字符。
*  :有字符,长度可以为0。

- 阅读剩余部分 -

Shell变量

变量设置


Variable-name=value : 设置实际值到 variable-name
Variable-name+value : 如果设置了 variable-name,则重设其值
Variable-name:?value : 如果未设置 variable-name,显示未定义用户错误信息
Variable-name?value : 如果未设置 variable-name,显示系统错误信息
Variable-name:=value : 如果未设置 variable-name,设置其值
Variable-name:-value : 同上,但是取值并不设置到 variable-name,可以被替换

- 阅读剩余部分 -

shell中位置变量参数

$# : 传递到脚本的参数个数
$* : 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过 9个
$$ : 脚本运行的当前进程 ID号
$! : 后台运行的最后一个进程的进程 ID号
$@ : 与$#相同,但是使用时加引号,并在引号中返回每个参数
$- : 显示shell使用的当前选项,与 set命令功能相同
$? : 显示最后命令的退出状态。 0表示没有错误,其他任何值表明有错误。


#!/bin/sh #param.sh # $0:文件完整路径名 echo "path of script : $0" # 利用basename命令文件路径获取文件名 echo "name of script : $(basename $0)" # $1:参数1 echo "parameter 1 : $1" # $2:参数2 echo "parameter 2 : $2" # $3:参数3 echo "parameter 3 : $3" # $4:参数4 echo "parameter 4 : $4" # $5:参数5 echo "parameter 5 : $5" # $#:传递到脚本的参数个数 echo "The number of arguments passed : $#" # $*:显示所有参数内容i echo "Show all arguments : $*" # $$:脚本当前运行的ID号 echo "Process ID : $$" # $?:回传码 echo "errors : $?"
输入./param.sh hello world

[firefox@fire Shell]$ ./param.sh hello world
path of script : ./param.sh
name of script : param.sh
parameter 1 : hello
parameter 2 : world
parameter 3 :
parameter 4 :
parameter 5 :
The number of arguments passed : 2
Show all arguments : hello world
Process ID : 5181
errors : 0

目录拷贝--bash实现

刚开始看shell,写了一个bash的小程序,功能是将原目录下的所有子目录都复制到目的目录,但是不复制里面的文件。能够用于某些场合:比如需要原来的文件目录结构,但是里面的内容却是需要更新的。下面的代码都是在我自己的电脑上测试的,路径稍微改动下就OK!

- 阅读剩余部分 -

alias系统配置

今天不小心写一个shell的时候把我很多资料都删除了,就是因为脚本里面用到了rm,具体的错误也不是很清楚,因为运行的时候把源文件都删除了。诶,真是很伤心的~~~

于是我就修改了alias的系统文件配置,想在以后删除文件的时候有提示。

[firefox@fire ~]$ vim ~/.bashrc


然后在文本最后加入

alias rm='rm -i'


默认bash是要在下次启动的时候才生效的,不过可以输入

[firefox@fire ~]$ source ~./bashrc


就可以在立即生效!

sed变量替换问题

下午在写一段shell脚本的时候,遇到了一个问题,就是在sed里面的变量替换不了。

sed   's/^$srcdir/test/g'   /tmp/src_temp_dir.txt  >  /tmp/des.txt


上面srcdir变量里面存的是一个文件的完整路径,文件里面也是一些路径的字符串。我想把原来文件里的路径都换了。结果就是换不了,弄了很久才怀疑是$srcdir没有解释出来,结果去网上搜了下,因为刚开始看shell和正则,所以不是很懂。到后来才发现换成下面的就OK了:

sed  "s,^${srcdir},temp,g"   /tmp/src_temp_dir.txt  >  /tmp/des.txt


具体原因不是很懂。。。

交换机配置基本命令

平安夜晚上决定写篇博客,最近要期末考试了,一个学期落下的课程每天都得补,但是趁着杰哥在,我学习 了下实验室的锐捷的设备,主要是交换机和路由的配置。只学了两个下午,所以就大概记录下学到的东西。

首先是vlan技术:VLAN(虚拟局域网)是对连接到的第二层交换机端口的网络用户的逻辑分段,不受网络用户的物理位置限制而根据用户需求进行网络分段。一个VLAN可以在一个交换机或者跨交换机实现。VLAN可以根据网络用户的位置、作用、部门或者根据网络用户所使用的应用程序和协议来进行分组。上面是百度百科上的一些话,简而言之,用vlan技术能划分不同的网络(就算接在同一交换机上的),而且可以使其通信。下面是一些基本的命令的记录:

- 阅读剩余部分 -