preg_replace只替换一次

<?php
function sst($result,$keys){
$len=substr_count($result,$keys);
for($i=1;$i<=$len;$i++){
$num=$i.”、”;
$result=preg_replace(“/$keys/”,$num,$result,1);
echo $result.”<br/>”;
}

return $result;
}

sst(“<xdw>十分士大夫发生发生<xdw>123544++;<xdw>545″,”<xdw>”);

?>

addslashes,mysql_real_escape_string ,mysql_escape_string的区别

本文介绍的是用 mysql_real_escape_string对用户提交数据进行整理处理和通过addslashes以及mysql_escape_string这3个类似的功能函数的区别。经过转义的数据可以直接插入到数据库中。

很好的说明了addslashes和mysql_real_escape_string的区别,虽然国内很多PHP coder仍在依靠addslashes防止SQL注入(包括我在内),我还是建议大家加强中文防止SQL注入的检查。addslashes的问题在于黑客可以用0xbf27来代替单引号,而addslashes只是将0xbf27修改为0xbf5c27,成为一个有效的多字节字符,其中的0xbf5c仍会被看作是单引号,所以addslashes无法成功拦截。

当然addslashes也不是毫无用处,它是用于单字节字符串的处理,多字节字符还是用mysql_real_escape_string吧。

另外对于php手册中get_magic_quotes_gpc的举例:
if (!get_magic_quotes_gpc()) {
$lastname = addslashes($_POST[‘lastname’]);
} else {
$lastname = $_POST[‘lastname’];
}
最好对magic_quotes_gpc已经开放的情况下,还是对$_POST[’lastname’]进行检查一下。

再说下mysql_real_escape_string和mysql_escape_string这2个函数的区别:
mysql_real_escape_string 必须在(PHP 4 >= 4.3.0 PHP 5)的情况下才能使用。否则只能用 mysql_escape_string ,两者的区别是:
mysql_real_escape_string 考虑到连接的当前字符集,而mysql_escape_string 不考虑。

总结一下:

addslashes() 是强行加;

mysql_real_escape_string() 会判断字符集,但是对PHP版本有要求;

mysql_escape_string不考虑连接的当前字符集。

mysql_real_escape_string()函数用于转义SQL语句中的特殊字符,该函数的语法格式如下:

string mysql_real_escape_string ( string $unescaped_string[, resource $link_identifier ] )

在上述语法中涉及到的参数说明如下。

unescaped_string:未转义的字符串。

link_identifier:MySQL的连接标识符。

mysql_real_escape_string()函数不转义”%” 和 “_”这两个符号。

使用函数mysql_real_escape_string()函数的示例代码如下:

代码23-19 光盘\codes\第23章\23.4\mysql_real_escape_string.php

<?php $connection=mysql_connect(“localhost”,”root”,”root”) ordie(“连接服务器失败”); $person= “Jone’s and Bobo’s teacher”; $escaped_person= mysql_real_escape_string($person); echo$escaped_person; ?>

上面代码的输出结果如图23-18所示。

图23-18 转义后的字符

Linux下的文件共享全攻略系列之三:主流FTP服务器Wu-ftpd入门指南

目前,研究者们开发了许多网络服务和协议来完成资源共享的功能。对于网络用户和管理员来说,他们希望得到免费和高效的服务,而这种需求的最好选择莫过于当前开源的操作系统Linux下的产品了。本专题从多个应用服务层面着重向读者们推荐几种实用的用于资源共享的技术及其软件。

本文是系列的第3篇文章,详细介绍FTP。专题的完整内容,请参见:

Linux下的文件共享服务全攻略 http://os.51cto.com/art/201010/231947.htm

 

 

Wu-ftpd是Internet上最流行的FTP守护程序。Wu-ftpd功能十分强大,可以构建多种类型FTP服务器。Wu-ftpd菜单可以帮助用户轻松地实现对FTP服务器的配置:支持构造安全方式的匿名FTP的访问,可以控制同时访问的用户的数量,限制可以允许访问的IP网段,并可以在一台主机上设置多个虚拟目录。Wu-ftpd有三种注册方式:匿名FTP、实际用户FTP以及guestFTP。匿名FTP使用用户名“anonymous”和一个email类型的口令进行注册。

Wu-ftpd发布较早。在最新版本(2.6.2)里,其已经对最为人担心的系统安全性问题做了完善的修正,因此还是Ftp Server中的主流。下列是Wu-ftpd的一些功能:

可对不同网域实行不同存取权限和可存取时段。用户在下载档案的同时,可自动实行压缩或解压工作。可记录FTP Server使用情形。可限定最多联机人数,以符合整体运作效能。显示相关讯息,让使用者了解接收状态。可将FTP Server暂停,便于系统维护。支持虚拟FTP主机(Virtual FTP Servers)。1、安装Wu-ftpd服务器

安装Wu-ftpd有两种方式,一种是安装RPM形式的发布包;另外一种方式是自己动手去编译生成。下面分别介绍这两种安装方式的步骤。

1.RPM包安装方式

该安装包可以在RPMfind上下载得到。以RPM包方式安装非常简单,只要执行下面简单的几个步骤就可以完成:

//将下载得到的rpm包存放在/tmp目录下#cp wu-ftpd-2.6.2-8.i386.rpm /tmp//切换目录#cd /tmp//进行安装#rpm -ivh wu-ftpd-2.6.2-8.i386.rpm

2.源代码安装方式

压缩的源代码可以在处得到。目前网上的最新版本为:wu-ftpd-2.6.2.tar,下面是安装步骤:

//将压缩的源代码拷贝到/usr/src目录下# cp wu-ftpd.2.6.2.tar.gz /usr/src//对压缩文档进行解压缩#tar xvfz wu-ftpd.2.6.2.tar.gz//切换目录#cd wu-ftpd-2.6.2//配置#./configure//编译#make#make install2、启动Wu-ftpd服务器

在安装好Wu-ftpd服务器后,就可以用默认配置启动使用该服务器了。通常来说,启动该服务器有两种方式:使用xinetd以及命令行启动。下面首先分别介绍这两种启动方式,然后通过例子说明使用该服务器的过程。

1.xinetd启动方式

使用该启动方式,只要在/etc/xinetd.d目录下配置wu-ftpd文件即可,如下步骤所示:

#vi wu-ftpd //使用vi编辑wu-ftpd文件//编辑内容如下# default: on /默认/系统启动时同时启动该服务器# description: The wu-ftpd FTP server serves FTP connections. It uses \# normal, unencrypted usernames and passwords for authentication.service ftp{disable = nosocket_type = streamwait = nouser = rootserver = /usr/sbin/in.ftpdserver_args = -l -alog_on_success += DURATION USERIDlog_on_failure += USERIDnice = 10}#service xinetd restart //重新启动xientd服务,以使改动生效

2.命令行方式启动

使用命令行启动该服务器非常简单,如下所示命令:

#/usr/sbin/ftpshut //首先关闭该服务#/usr/sbin/ftprestart //然后重新启动

接下来,我们将通过具体的例子说明Wu-ftpd服务器的使用方法。

 

3、使用Wu-ftpd服务器

本小节通过具体的例子来说明如何使用Wu-ftpd服务器。

(1)使用匿名用户登录服务器

该步骤使用用户名Anonymous进行FTP登录,密码可以随便输入,一般情况下Wu-FTP服务器都会通过,这也是大多数Wu-FTP服务器的默认登录方式。

#ftp 127.0.0.1Connected to 127.0.0.1 (127.0.0.1).220 aserver FTP server (Version wu-2.6.2) ready.Name (127.0.0.1:root): anonymous331 Guest login ok, send your complete e-mail address as password.Password:230 Guest login ok, access restrictions apply.

(2)浏览匿名用户登录到服务器的目录

该步骤测试使用匿名用户登录Wu-FTP服务器后的浏览情况,即匿名用户登录后能够看到的FTP服务器资源的视图。在一般情况下,匿名用户只具有非常有限的资源视图,因而级别较低。如果需要提升权限的话,需要针对匿名用户进行配置。

ftp> ls227 Entering Passive Mode (127,0,0,1,101,144)150 Opening ASCII mode data connection for directory listing.total 40d–x–x–x 2 root root 4096 Jun 13 2002 bind–x–x–x 2 root root 4096 Jul 22 2002 etcdrwxrwxrwx 10 14 50 4096 Oct 10 2003 incomingdrwxr-xr-x 2 root root 4096 Jun 13 2002 libdrwxrwxrwx 2 root 50 4096 Nov 8 2002 pub226 Transfer complete.ftp> cd pub250 CWD command successful.ftp> ls227 Entering Passive Mode (127,0,0,1,140,149)150 Opening ASCII mode data connection for directory listing.total 18008-rw-r–r– 1 root root 9203662 Oct 7 2002 stack.ots.20021006.tgz226 Transfer complete.

(3)测试建立目录权限,操作失败,匿名用户没有该权限

该步骤进一步测试匿名用户所具有的权限。通过此操作不难看到,在匿名用户建立目录时,服务器返回失败,进一步证明了匿名用户一般情况下只具有读的权限,而不具有写的权限。

ftp> mkdir super550 super: Permission denied on server. (Upload dirs)ftp> cd incoming550 incoming: No such file or directory.ftp> cd ..250 CWD command successful.ftp> ls227 Entering Passive Mode (127,0,0,1,164,206)150 Opening ASCII mode data connection for directory listing.total 40d–x–x–x 2 root root 4096 Jun 13 2002 bind–x–x–x 2 root root 4096 Jul 22 2002 etcdrwxrwxrwx 10 14 50 4096 Oct 10 2003 incomingdrwxr-xr-x 2 root root 4096 Jun 13 2002 libdrwxrwxrwx 2 root 50 4096 Nov 8 2002 pub226 Transfer complete.

(4)进入指定目录,准备测试下载文件功能

该步骤测试Wu-FTP服务器的下载文件功能。对于匿名用户来说,最常见的一个功能就是下载文件,从而说明FTP服务器的最大的功效就是文件和资源共享。

ftp> cd incoming250 CWD command successful.ftp> dir227 Entering Passive Mode (127,0,0,1,22,51)150 Opening ASCII mode data connection for directory listing.total 112936-rw-rw-rw- 1 14 50 47104 Aug 26 2002 1.rtf-rw-rw-rw- 1 14 50 4812 Aug 28 2002 LiveTri.zipdrwxrwxrwx 3 4095 root 4096 Dec 14 2002 RA-rw-rw-rw- 1 14 50 672 Oct 30 2002 a-rw-r–r– 1 root root 38754436 Oct 30 2002 linux-2.4.18.tar.gzdrwxrwxrwx 2 root root 4096 Nov 26 2002 packagedrwxrwxrwx 2 4095 root 4096 Jul 29 2002 public_module-rw-rw-rw- 1 14 50 1968255 Oct 30 2002 rfc2616.pdfdrwxrwxrwx 3 4095 root 4096 Aug 2 2002 sample_log-rw-r–r– 1 root root 6506 Jul 28 2002 sendpacket.tar.gzdrwxrwxr-x 11 510 510 4096 Oct 17 2002 stack-rw-rw-rw- 1 14 50 0 Jul 24 2002 tcpipdrwxrwxrwx 4 4095 root 4096 Aug 23 2002 temp-rw-rw-rw- 1 14 50 0 Aug 22 2002 test.doc226 Transfer complete. //如下操作说明下载文件test.doc操作成功ftp> get test.doclocal: test.doc remote: test.doc227 Entering Passive Mode (127,0,0,1,7,193)150 Opening ASCII mode data connection for test.doc (0 bytes).226 Transfer complete. //通过如下操作浏览下载到本地的文件,发现test.doc已经下载在其中ftp> !lschargen cvspserver daytime-udp echo-udp ntalk qmail-pop3 rexec rsh sgi_fam telnet time wu-ftpdchargen-udp daytime echo finger pop3 qmail-smtp rlogin rsync talk test.doc time-udpftp> put wu-ftpdlocal: wu-ftpd remote: wu-ftpd227 Entering Passive Mode (127,0,0,1,202,89)150 Opening ASCII mode data connection for wu-ftpd.226 Transfer complete.376 bytes sent in 0.00011 secs (3.3e+03 Kbytes/sec)

(5)测试删除权限,操作失败

最后一个步骤来测试匿名用户对于Wu-FTP服务器中共享资源的删除权限状况。实验证明,匿名用户一般不具有删除权限,否则会成为巨大的安全隐患,共享的资源随时都会有被删除的危险,因而需要对该权限实行禁用。

ftp> delete wu-ftpd553 wu-ftpd: Permission denied on server. (Delete)ftp> bye221-You have transferred 361 bytes in 2 files.221-Total traffic for this session was 1873 bytes in 2 transfers.221 Thank you for using the FTP service on aserver.

MYSQL 随机 抽取实现方法及效率分析

MYSQL的随机抽取实现方法。举个例子,要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1。

代码如下:
请教怎么从数据库随机读出15条记录?
order by rand() limit 0,15
怎么从数据库随机读出所有记录?
order by rand()

 

但是,后来我查了一下MYSQL的官方手册,里面针对RAND()的提示大概意思就是,在ORDER BY从句里面不能使用RAND()函数,因为这样会导致数据列被多次扫描。但是在MYSQL 3.23版本中,仍然可以通过ORDER BY RAND()来实现随机。

但是真正测试一下才发现这样效率非常低。一个15万余条的库,查询5条数据,居然要8秒以上。查看官方手册,也说rand()放在ORDER BY 子句中会被执行多次,自然效率及很低。
You cannot use a column with RAND() values in an ORDER BY clause, because ORDER BY would evaluate the column multiple times.
搜索Google,网上基本上都是查询max(id) * rand()来随机获取数据。
SELECT *
FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM `table`)) AS id) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id ASC LIMIT 5;

但是这样会产生连续的5条记录。解决办法只能是每次查询一条,查询5次。即便如此也值得,因为15万条的表,查询只需要0.01秒不到。

下面的语句采用的是JOIN,mysql的论坛上有人使用
SELECT *
FROM `table`
WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` )
ORDER BY id LIMIT 1;

我测试了一下,需要0.5秒,速度也不错,但是跟上面的语句还是有很大差距。总觉有什么地方不正常。

于是我把语句改写了一下。
SELECT * FROM `table`
WHERE id >= (SELECT floor(RAND() * (SELECT MAX(id) FROM `table`)))
ORDER BY id LIMIT 1;

这下,效率又提高了,查询时间只有0.01秒

最后,再把语句完善一下,加上MIN(id)的判断。我在最开始测试的时候,就是因为没有加上MIN(id)的判断,结果有一半的时间总是查询到表中的前面几行。
完整查询语句是:
SELECT * FROM `table`
WHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`)) + (SELECT MIN(id) FROM `table`)))
ORDER BY id LIMIT 1;

SELECT *
FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`))+(SELECT MIN(id) FROM `table`)) AS id) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id LIMIT 1;

最后在php中对这两个语句进行分别查询10次,
前者花费时间 0.147433 秒
后者花费时间 0.015130 秒
看来采用JOIN的语法比直接在WHERE中使用函数效率还要高很多。

php 正则表达式匹配非链接文字

//$str='<a href=”aaaaa”>aaa百度aaaaa</a><div>test</div><p>crumbs</p></a>百度知道<a href=”bbbb”>bbbbbbb</a><p>crumbs</p><p>crumbs</p>百度<p>crumbs</p><p>crumbs</p>贴吧<p>crumbs</p><p>crumbs</p><a href=”ccccc”>ccccccc</a>’;

$str='<a href=”aaaaa”>aaa百度aaaaa</a><div>test</div><p>crumbs</p></a>百度知道’;

//$str = preg_replace(‘/(?<=<\/a>)(.*?)(百度)(.*?)(?=(?<!(<a))<a)/i’,’\1<a href=\”baidu.com\”>\2</a>\3`’,$str);
$str = preg_replace(‘/(?<=<\/a>)(.*?)(百度)(.*?)(?=(?<!(<a)))/i’,’\1<a href=\”baidu.com\”>\2</a>\3`’,$str);
echo $str;

清除Magento缓存的几种方法

Magento后台叫“刷新”缓存,实际在程序执行上是清除缓存(Cleaning Cache)。

如果你想在后台刷新缓存,很简单,去后台“System > Cache Management”,点击清除全部缓存,或者在列表中选择一项你想清除的缓存。在这里我主要讲的不是后台清除,而是命令行和程序的直接清除。

如果你想通过命令行清除缓存,你需要使用ssh链接你的服务器,打如下命令:

cd /where/your/mangento/root/var/cache rm -rf *

如果你需要在你的程序中清除缓存,一般是在计划任务中或者其他任何地方需要用这个,请将下列代码加到你的程序中,很简单。

Mage::app()->cleanCache();

也可以这样写:

Mage::app()->getCache()->clean();

如果你的计划任务脚本不在Magento程序内部,是个外部的执行脚本,那么你可以这样写:

$magento_bootstrap=’/[YOUR MAGENTO PATH]/app/Mage.php’;require_once$magento_bootstrap;umask(0); Mage::run(); Mage::app()->cleanCache();

多说句,呵呵,Magento里的Mage类是个启动器类,在ZendFramwork中称作Bootstrap,是通向Magento的大门。祝你使用Magento愉快~

mysql数据库远程访问设置方法

1、修改localhost
更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改成”%”
mysql>use mysql;
mysql>update user set host = ‘%’ where user = ‘root’;
mysql>select host, user from user;
mysql>FLUSH PRIVILEGES;

 

2、指定授权
使用myuser/mypassword从任何主机连接到mysql服务器:
GRANT ALL PRIVILEGES ON *.* TO ‘myuser’@’%’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;

使用myuser/mypassword从ip为192.168.225.166的主机连接到mysql服务器:
GRANT ALL PRIVILEGES ON *.* TO ‘myuser’@’192.168.225.166’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;

 

3、泛授权
mysql -h localhost -u root
mysql>GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ WITH GRANT OPTION; //赋予任何主机上以root身份访问数据的权限
mysql>FLUSH PRIVILEGES;

 

解决Mysql无法远程连接的问题

1、Mysql的端口是否正确
通过netstat -ntlp 查看端口占用情况,一般情况下端口是3306。在用工具连接MySQl是要用到端口。例如My Admin\My Query Browser\MySQl Front等。

2、检查用户权限是否正确
mysql库的user表里有两条记录:host分别为localhost和%(为了安全,%可以换成你需要外部连接的IP)。

3、查看/etc/mysql/my.cnf中,skip-networking 是否已被注掉
需要注掉
报错:ERROR 2003 (HY000): Can’t connect to MySQL server on ‘192.168.51.112’ (111)

 

sudo gedit /etc/mysql/my.cnf
#skip-external-locking

#bind-address        = 127.0.0.1

skip-name-resolve

4、查看iptables是否停掉,没关的情况下,无法连接
通过:service iptables stop临时关闭。
报错:ERROR 2003 (HY000): Can’t connect to MySQL server on ‘192.168.51.112’ (113)

magento根据产品模型号及尺码,进行上下架操作。

SELECT option_id    FROM `catalog_product_option`  where  product_id=(SELECT entity_id   FROM `catalog_product_entity`  where sku=’test’ )

option_type_id=SELECT  F.option_type_id   FROM  catalog_product_option_type_value as F left join catalog_product_option_type_title as S     on  F.option_type_id=S.option_type_id where F.option_id=55 and S.title=’M’

delete FROM `catalog_product_option_type_value` where  option_type_id=310

delete   FROM `catalog_product_option_type_price`  where option_type_id=310 ——-下架SQL

整体下架:

update cataloginventory_stock_item set qty=’0′ where item_id=(select entity_id as item_id from catalog_product_entity where sku=’sku值’);
———————————–上架SQL

SELECT option_id    FROM `catalog_product_option`  where  product_id=(SELECT entity_id   FROM `catalog_product_entity`  where sku=’test’ )

$arrInfo=SELECT option_type_id   FROM `catalog_product_option_type_value` where option_id=’55’ —-查询主表的信息
//备注:$arrInfo数组

循环删除下面属性表
foreach($arrInfo as  ){

delete FROM `catalog_product_option_type_value` where  option_type_id=310

delete   FROM `catalog_product_option_type_title` where  option_type_id=310
}

delete FROM `catalog_product_option_type_value` where option_id=’55

插入数据
insert into catalog_product_option_type_value set option_id=’55’,sku=1,sort_order=1
foreach(){

获取option_type_id插入属性表
insert into catalog_product_option_type_price set set option_type_id=314,store_id=0

insert into catalog_product_option_type_title  set option_type_id=314,store_id=0,title=’M’

}

opencart根据产品模型号、尺码进行产品上下架操作。

整体下架:

update product  set quantity=0 where model=”model号”;

根据相应的产品模型号和尺码进行操作:

$sql=” update product_option_value set quantity=0,subtract=1 where  product_id=(select product_id from product where model='”.$model.”‘)  and option_value_id=(select option_value_id from option_value_description where name='”.$size.”‘)”;

linux下修改IP、DNS、路由命令行设置

linux下修改IP、DNS、路由命令行设置

ubuntu 版本命令行设置IP
cat /etc/network/interfaces

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

auto eth0

iface eth0 inet static

address 192.168.1.104

netmask 255.255.255.0

network 192.168.1.0

broadcast 192.168.1.255

gateway 192.168.1.2

# dns-* options are implemented by the resolvconf package, if installed

dns-nameservers 58.22.96.66 218.104.128.106 202.101.138.8

dns-search .COM

重启网卡: /etc/init.d/networking restatr

 

Ubuntu IP对于电脑使用的玩家的常用软件,然后我就学习及深入的研究Ubuntu IP,在这里和大家一起探讨Ubuntu IP的使用方法,希望对大家有用。Ubuntu IP地址配置.

一、使用命令设置Ubuntu IP地址

1.修改配置文件blacklist.conf禁用IPV6:sudo vi /etc/modprobe.d/blacklist.conf

2.在文档最后添加 blacklist ipv6,然后查看修改结果:cat /etc/modprobe.d/blacklist.conf

3.设置Ubuntu IP(设置网卡eth0的IP地址和子网掩码)sudo ifconfig eth0 192.168.2.1 netmask 255.255.255.0

4.Ubuntu IP设置网关sudo route add default gw 192.168.2.254

5.Ubuntu IP设置DNS 修改/etc/resolv.conf,在其中加入nameserver DNS的地址1 和 nameserver DNS的地址2 完成。

6.重启网络服务(若不行,请重启ubuntu:sudo reboot):sudo /etc/init.d/networking restart

7.查看当前Ubuntu IP:ifconfig

二、直接修改Ubuntu IP系统配置文件

Ubuntu IP的网络配置文件是:/etc/network/interfaces打开后里面可设置DHCP或手动设置静态ip。前面auto eth0,让网卡开机自动挂载。

1. 以DHCP方式配置网卡

编辑文件/etc/network/interfaces:  sudo vi /etc/network/interfaces

并用下面的行来替换有关eth0的行:

# The primary network interface – use DHCP to find our address  auto eth0  iface eth0 inet dhcp

用下面的命令使网络设置生效:

sudo /etc/init.d/networking restart

也可以在命令行下直接输入下面的命令来获取地址sudo dhclient eth0

2. 为网卡配置静态Ubuntu IP地址

编辑文件/etc/network/interfaces:  sudo vi /etc/network/interfaces

并用下面的行来替换有关eth0的行:

# The primary network interface  auto eth0  iface eth0 inet static  address 192.168.2.1  gateway 192.168.2.254  netmask 255.255.255.0  #network 192.168.2.0  #broadcast 192.168.2.255

将上面的Ubuntu IP地址等信息换成你自己就可以了.用下面的命令使网络设置生效:

sudo /etc/init.d/networking restart

3. 设定第二个Ubuntu IP地址(虚拟IP地址)

编辑文件/etc/network/interfaces:  sudo vi /etc/network/interfaces

在该文件中添加如下的行:

auto eth0:1  iface eth0:1 inet static  address x.x.x.x  netmask x.x.x.x  network x.x.x.x  broadcast x.x.x.x  gateway x.x.x.x

根据你的情况填上所有诸如address,netmask,network,broadcast和gateways等信息:用下面的命令使网络设置生效:sudo /etc/init.d/networking restart

4. 设置主机名称(hostname)
使用下面的命令来查看当前主机的主机名称:sudo /bin/hostname
使用下面的命令来设置当前主机的主机名称:sudo /bin/hostname newname
系统启动时,它会从/etc/hostname来读取主机的名称。

5. 配置DNS

首先,你可以在/etc/hosts中加入一些主机名称和这些主机名称对应的IP地址,这是简单使用本机的静态查询。要访问DNS 服务器来进行查询,需要设置/etc/resolv.conf文件,假设DNS服务器的IP地址是192.168.2.2, 那么/etc/resolv.conf文件的内容应为:
search chotim.com
nameserver 192.168.2.2

6.手动重启网络服务:sudo /etc/init.d/networking restart

返回结果如下:
*Reconfiguring network interfaces… [OK]

redhat linux版本命令行设置IP:

  ifconfig eth0 新ip

  然后编辑/etc/sysconfig/network-scripts/ifcfg-eth0,修改ip

  一、修改IP地址

  [aeolus@db network-scripts]$ vi ifcfg-eth0

  DEVICE=eth0

  ONBOOT=yes

  BOOTPROTO=static

  IPADDR=219.136.241.211

  NETMASK=255.255.255.128

  GATEWAY=219.136.241.254

  二、修改网关

  vi /etc/sysconfig/network

  NETWORKING=yes

  HOSTNAME=Aaron

  GATEWAY=192.168.1.1

  三、修改DNS

  [aeolus@db etc]$ vi resolv.conf

  nameserver 202.96.128.68

  nameserver 219.136.241.206

  四、重新启动网络配置

  /etc/init.d/network restart五、例子

1、修改ip地址

即时生效:

# ifconfig eth0 192.168.0.20 netmask 255.255.255.0

启动生效:

修改/etc/sysconfig/network-scripts/ifcfg-eth0

2、修改default gateway

即时生效:

# route add default gw 192.168.0.254

启动生效:

修改/etc/sysconfig/network-scripts/ifcfg-eth0

修改dns

修改/etc/resolv.conf

修改后可即时生效,启动同样有效

3、修改host name

即时生效:

# hostname fc2

启动生效:

修改/etc/sysconfig/network

ps:

DEVICE=eth0

BOOTPROTO=static

IPADDR=192.168.8.85

NETMASK=255.255.248.0

GATEWAY=192.168.8.1

HWADDR=00:0uu3:47:2C:D5:40

ONBOOT=yes

4:添加linux系统启动项:

vi /etc/rc.d/rc.local

修改Linux系统SSH的端口号

修改Linux系统SSH的端口号 操作系统linux和Unix都适用: 修改配置文件 /etc/ssh/sshd_config,将里面的Port改为新端口(此端口必须是没有程序用到),比如10022, 然后

kill -HUP `cat /var/run/sshd.pid` 就行了。 注:现有连接自己不会断,因为kill -HUP `

修改Linux系统SSH的端口号

操作系统linux和Unix都适用:

修改配置文件 /etc/ssh/sshd_config,将里面的Port改为新端口(此端口必须是没有程序用到),比如10022,

然后 kill -HUP `cat /var/run/sshd.pid` 就行了。

注:现有连接自己不会断,因为kill -HUP `cat /var/run/sshd.pid` 只是HUP监听的那个,已经建立的连接(不同的 pid)不会断。

要想重新启用并用新端口登陆 ,此时可以在本登陆帐户下 用 exit 命令退出,在用新的端口登陆即可!

本文来自[Svn中文网]转发请保留本站地址:http://svn8.com/linux/WL/20091223/15603.html

 

linux单网卡上配置双IP文章分类:操作系统

/sysconfig/network-scripts在network-scripts下有一个ifcfg-eth0

复制ifcfg-eth0 为ifcfg-eth0:1

然后用vi编辑进行编辑
vi ifcfg-eth0:1
# Intel Corporation 82566DC Gigabit Network Connection
DEVICE=eth0
BOOTPROTO=none
BROADCAST=218.95.37.255
HWADDR=00:19:d1:34:2d:b8
IPADDR=218.95.37.250——————IP地址
NETMASK=255.255.255.192—————子网掩码
NETWORK=218.95.37.192
ONBOOT=yes
GATEWAY=218.95.37.193—————–网关
TYPE=Ethernet

按shfit键加:
:wq

保存退出然后把eth0:1激活就可以了。

ifconfig eht0:1 up

 

RedHat Linux一个网卡配置多个IP

linux下一个网卡如何配置多个IP?RedHat linux下边图形界面的网络配置没有找到在哪里配置第二个IP的地方。
如果临时性的增加一个IP(重启后就丢失了),可以使用ifconfig命令;ifconfig的用法可以使用man ifconfig查看,最常用的给网卡配置ip的命令为
#ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up
说明:
eth0是第一个网卡,其他依次为eth1,eth*
192.168.0.1是给网卡配置的第一个网卡配置的ip地址
netmask 255.255.255.0 配置的是子网掩码
up是表示立即激活
如果给单个网卡eth0配置多个ip地址如何操作呢,如果使用ifconfig命令那么上边需要改动的地方只有eth0这个而已,查了一些资料,明白了将 eth0改为eth0:x(x是0-255例如eth0:0或者eth0:1等等),eth0:x称为虚拟网络接口,是建立在网络借口 (eth0)上边。
所以给单网卡配置多ip的方法就是使用命令:
#ifconfig eth0:0 192.168.0.1 netmask 255.255.255.0 up
#ifconfig eth0:1 192.168.0.2 netmask 255.255.255.0 up
#ping 192.168.0.1
#ping 192.168.0.2
ping测试通过,就完成了单网卡配置多ip的功能。reboot以后发现ip地址变了回去。
所以必须设置启动时自动激活ip设置
第一种:
将上边的命令ifconfig加入到rc.local中去
第二种:
就是仿照/etc/sysconfig/network-scripts/ifcfg-eth0增加一文件根据网络虚拟接口的名字进行命名
例如ifcfg-eth0:0或者ifcfg-eth0:1等等
#下边看下ifcfg-eth0:0文件里面的配置信息
DEVICE=eth0:0 #网络虚拟接口eth0:0
ONBOOT=yes #启动的时候激活
BOOTPROTO=static #使用静态ip地址
IPADDR=192.168.0.1 #分配ip地址
NETMASK=255.255.255.0 #子网掩码
其他配置文件类似。
重启网络服务
#service network restart
ping测试,配置成功。

如何关闭一个ip呢则使用
#ifconfig eth*[:x] down(*代表的是网卡编号,x代表虚拟接口号0-255)

提示:传说有个netconfig,在RedHat企业版5上面并没有找到。
提示:RedHat linux下边图形界面的网络配置没有找到在哪里配置第二个IP的地方。
这句话有误,可以采用复制网卡,就可以配置第二个IP;不过这样做,居然出错!
变成图形界面,也并没有变得容易理解;需要尝试几次,才弄明白图形跟文本配置之间的对应关系。

 

#!/bin/sh

eth01=/etc/sysconfig/network-scripts/ifcfg-eth0:1

touch $eth01

echo DEVICE=eth0:1>>$eth01
echo BOOTPROTO=none>>$eth01
echo IPADDR=192.168.40.76>>$eth01
echo NETMASK=255.255.255.0>>$eth01
echo ONBOOT=yes>>$eth01

/etc/init.d/network restart