Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3425638
  • 博文数量: 864
  • 博客积分: 14125
  • 博客等级: 上将
  • 技术积分: 10634
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-27 16:53
个人简介

https://github.com/zytc2009/BigTeam_learning

文章分类

全部博文(864)

文章存档

2023年(1)

2021年(1)

2019年(3)

2018年(1)

2017年(10)

2015年(3)

2014年(8)

2013年(3)

2012年(69)

2011年(103)

2010年(357)

2009年(283)

2008年(22)

分类: LINUX

2010-10-28 13:46:52

网络服务
tp服务器

为什么需要TFTP服务器?

在嵌入式开发过程中有宿主机目标机的角色之分:宿主机是执行编译、链接嵌入式软件的计算机;目标机是运行嵌入式软件的硬件平台。

TFTP服务器作为工作于宿主机上的软件,主要提供对目标机的主要映像文件的下载工作

 

Tftp-安装

使用RPM包安装tftp-server

1、如果利用如下命令能够看到服务已启动, 则不用安装

[arm@localhost]# netstat -a | grep tftp

已安装结果: udp 0 0 *:tftp *:*

2、如果没有安装,执行如下命令安装。(文件在安装原文件中)

[root@localhost]# rpm -ivh tftp-server-0.42-3.1.i386.rpm

3、建立tftp的主工作目录

[root@localhost btools]# mkdir /tftpboot

 

Tftp-配置

4、修改配置文件

[root@localhost btools]# vi /etc/xinetd.d/tftp

service tftp

{

…………………………

socket_type = dgram

…… …… ……

server = /usr/sbin/in.tftpd

server_args = -s /tftpboot

disable = no

…… …… ……

}

 

重启服务

#/etc/init.d/xinetd restart

#netstat -a | grep tftp

udp 0 0 *:tftp *:*

 

NFS介绍

网络文件系统(NFSNetwork FileSystem)是一种将远程主机上的分区(目录)经网络挂载到本地的一种机制,通过对网络文件系统的支持,用户可以在本地系统上像操作本地分区一样来对远程主机的共享分区(目录)进行操作。(类似于windows共享目录)

 

安装NFS服务器

[root@localhost]# rpm -q nfs-utils

如果没有安装,从对应Linux操作系统版本的安装光盘上找到nfs-utils的安装包。

例:

[root@localhost]# rpm -ivh nfs-utils-1.0.9-24.el5.i386.rpm

 

NFS配置

[root@localhost ]# vi /etc/exports

加入允许被其它计算机访问的目录和访问权限

例:

/home 192.168.1.*(rw,sync,no_root_squash)

1/home : 允许其他计算机访问的目录

2192.168.1.* : 被允许访问该目录的客户端IP地址

3Rw: 可读可写

4Sync:同步写磁盘(async:资料会先暂存于内存当中,而非直接写入硬盘)

5no_root_squash:表示客户端root用户对该目录具备写权限

 

NFS启动

1启动NFS服务器时用下面命令:

/etc/init.d/nfs start

2重启NFS服务器时用下面命令:

/etc/init.d/nfs restart

 

NFS使用

使用mount 命令挂载NFS 服务器上的共享目录。

# mount -t nfs servername:/shared_dir /localdir

例:

# mount -t nfs 10.168.1.100:/home /mnt/nfs

 

Samba

LinuxLinux之间通过NFS实现共享

Windowswindows之间通过共享目录实现共享

Linuxwindows之间怎么实现共享?

Samba

 

Samba

修改/etc/samba/smb.conf添加:

[root]

comment = Root Directories

browseable = yes

writeable = yes

path = /

valid users = smb(用户名)

 

Samba(添加用户)

vUseradd smb //添加smb系统用户

vSmbpasswd -a smb //修改密码

 

Wireshark (ethereal)

Wireshark 2006年夏天之前叫做Ethereal)是一款非常棒的LinuxWindows上的开源网络协议分析器。它可以实时检测网络通讯数据,也可以抓取网络通讯数据。可以通过图形界面浏览这些数据,可以查看网络通讯数据包中每一层的详细内容。

 

v Rpm ivh lm_sensors-2.10.0-3.1.i386.rpm

v Rpm ivh net-snmp-5.3.1-9.el5.i386.rpm

v Rpm ivh wireshark-0.99.6-1.el5.i386.rpm

v Rpm ivh wireshark-gnome-0.99.6-1.el5.i386.rpm


Shell编程

什么是Shell?

简单地讲,就是命令解析器,将用户输入的指令转换为相应的机

器能够运行的程序。种类

vBourne shell (sh)

vKorn shell (ksh)

vBourne Again shell (bash)

vC shell (包括csh and tcsh)

vTENEX/TOPS C shell (tcsh)

 

Shell脚本

Shell脚本是一个包含一系列命令序列文本文件。当运行这个脚本文件时,文件中包含的命令序列将得到执行

 

语法

Shell脚本的第一行必须是如下格式:

v#!/bin/sh

符号#!用来指定该脚本文件的解析程序。在上面例子中使用/bin/sh来解析该脚本。当编辑好脚本后,如果要执行该脚本,还必须使其具有可执行属性。

chmod +x filename

 

注释

在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。如果使用了注释,即使相当长的时间内没有使用该脚本,也能在很短的时间内明白该脚本的作用及工作原理。

 

变量

shell编程中,所有的变量都由字符串组成,并且不需要预先对变量进行声明,s1:

 

#!/bin/sh

#set variable a

a="hello world"

# print a

echo "A is:"

echo $a

 

有时候变量名很容易与其他文字混淆,比

如:

S13:

num=2

echo "this is the $numnd

思考:输出?Why?

num=2

echo "this is the $numnd"

这并不会打印出"this is the 2nd",而仅仅打印"this is the ",因为shell会去搜索变量numnd的值,但是这个变量时没有值的。可以使用花括号来告诉shell我们要打印的是num变量:

num=2

echo "this is the ${num}nd"

这将打印: this is the 2nd

 

默认变量

v$# :传入脚本的命令行参数个数

v$* :所有命令行参数值,在各个参数值之间留有空格

v$0 :命令本身(shell文件名)

v$1 :第一个命令行参数

v$2 :第二个命令行参数

 

S2:

#!/bin/sh

echo "number of vars:"$#

echo "values of vars:"$*

echo "value of var1:"$1

echo "value of var2:"$2

echo "value of var3:"$3

echo "value of var4:"$4

运行./s2 1 2 3 4

输出结果:?

 

局部变量

在变量首次被赋值时加上local 关键字可以声明一个局部变量,例s3:

#!/bin/bash

hello="var1"

echo $hello

function func1 {

local hello ="var2"

echo $hello

}

func1

echo $hello

输出:?

 

变量(注意)

1. 变量赋值时,=左右两边都不能有空格

2. BASH 中的语句结尾不需要分号

 

If语句

v if [ expression ]

then

#code block

Fi

 

v if [ expression ]

then

#code block

else

#code block

Fi

 

v if [ expression ]

then

#code block

else if [ expression ]

then

#code block

else

#code block

fi

fi

 

if [ expression ]; then

#code block

elif [ expression ]

then

#code block

else

#code block

fi

fi

 

比较

比较操作整数操作字符串操作

相同-eq =

不同-ne !=

大于-gt >

小于-lt <

大于或等于-ge

小于或等于-le

为空-z

不为空-n

 

例:

比较整数ab是否相等:if [ $a = $b ] (也可用eq

判断整数a是否大于整数bif [ $a -gt $b ]

比较字符串ab是否相等:if [ $a = $b ]

判断字符串a是否为空: if [ -z $a ]

判断整数变量a是否大于bif [ $a -gt $b ]

注意:

1. []符号的左右都留有空格

2. =左右都有空格

 

判断

-e 文件已经存在

-f 文件是普通文件

-s 文件大小不为零

-d 文件是一个目录

-r 文件对当前用户可以读取

-w 文件对当前用户可以写入

-x 文件对当前用户可以执行

S5

#!/bin/sh

folder=/home

[ -r "$folder" ] && echo "Can read $folder"

[ -f "$folder" ] || echo "this is not file"

 

For循环

for 循环结构与C 语言中有所不同,在BASH for 循环的基本结构是:

for var in [list]

do

#code block

done

其中$var 是循环控制变量,[list] var 需要遍历的一个集合,do/done 对包含了循环体,相当于C 语言中的一对大括号。另外如果do for 被写在同一行,必须在do 前面加上;。如:

 for $var in [list]; do

 

v S7:

#!/bin/bash

for day in Sun Mon Tue Wed Thu Fri Sat

do

echo $day

done

 

v 如果列表被包含在一对双引号中,则被认为是一个元素,S8:

#!/bin/bash

for day in "Sun Mon Tue Wed Thu Fri Sat

do

echo $day

done

 

注意

上面的例子中,在for 所在那行,变量day 是没有加"$" 符号的,而

在循环体内,echo 所在行变量$day 是必须加上"$" 符号的。

 

while循环

while 循环的基本结构是:

while [ condition ]

do

#code block

Done

 

until循环

until 循环的基本结构是:

until [ condition ]

do

#code block

done

while until的区别在于while是为真时执行,until是为假时执行

 

Case语句

BASH 中的case 结构与C 语言中的switch 语句的功能比较类似,可以用于进行多项分支控制。

case "$var" in

condition1 )

;;

condition2 )

;;

* )

default statments;;

esac

 

#!/bin/bash

echo "Hit a key, then hit return."

read Keypress

case "$Keypress" in

[A-Z] ) echo " Uppercase letter";;

[a-z] ) echo " Lowercase letter";;

[0-9] ) echo "Digit";;

* ) echo "Punctuation, whitespace, or other";;

esac




阅读(787) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~