-- 在这里要上外网,需要192.168.1.x的IP ifconfig eth0:0 192.168.1.x netmask 255.255.255.0 route add default gw 192.168.1.1 vim /etc/resolv.conf nameserver 8.8.8.8 ========================================================================== 网络有关的基本配置命令 # mii-tool eth0 --查看网卡状态,以前的虚拟机里不支持,现在vmware的版本里是支持的 eth0: negotiated 100baseTx-FD flow-control, link ok --代表网卡连接OK # mii-tool eth0 eth0: no link --代表网线和网卡没连 --除了link ok和no link两种之外其它显示就可能是网卡没驱动,或者网卡松了等等 # ethtool eth0 --查看网卡的工作模式等信息 Link partner advertised auto-negotiation: Yes Speed: 100Mb/s Duplex: Full # ethtool -s eth0 speed 10 duplex half autoneg off --改成10M/s的速率,半双工,关闭自动协商 Advertised auto-negotiation: No Speed: 10Mb/s Duplex: Half # scp /soft/rhel-server-6.3-x86_64-dvd.iso 10.1.1.26:/root/Desktop/ --你可以在两种速率的情况下做一个scp的远程拷贝测试,可以明显看到速度的变化 # ethtool -s eth0 speed 100 duplex full autoneg on --再改回来 ifconfig 查看当前的IP,网卡是否开启等信息 ip addr 或ip a 也可以看IP信息 # ifconfig eth0 Link encap:Ethernet HWaddr 10:C3:7B:69:48:B1 inet addr:10.1.1.10 Bcast:10.1.1.255 Mask:255.255.255.0 inet6 addr: fe80::12c3:7bff:fe69:48b1/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1375056 errors:0 dropped:0 overruns:0 frame:0 TX packets:2596704 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:95088451 (90.6 MiB) TX bytes:3348164310 (3.1 GiB) Interrupt:30 Base address:0x8000 ping 10.1.1.192 --直接ping一个IP 测试是否能通 ping -c 4 10.1.1.192 --只PING 4个包 # ip neighbor 或 ip n --查看和你机器联系过的IP与MAC地址的对应 # uname -a Linux li.cluster.com 2.6.32-279.el6.x86_64 #1 SMP Wed Jun 13 18:24:36 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux # uname -r 2.6.32-279.el6.x86_64 # uname -m x86_64 # cat /etc/redhat-release Red Hat Enterprise Linux Server release 6.3 (Santiago) ----------------------------------------- ssh 远程登录 Secure Shell [root@localhost ~]# ssh 10.1.1.104 --默认以当前用户远程登陆 The authenticity of host '10.1.1.104 (10.1.1.104)' can't be established. RSA key fingerprint is b1:70:27:ac:ad:f6:ab:35:00:5a:b7:ad:ad:e4:43:0a. Are you sure you want to continue connecting (yes/no)* yes --第一次远程登陆会让你输入yes,因为它会加一个RSA值到当前用户家目录下的.ssh/known_hosts文件里,下次再ssh这台机,就不用再输入yes了 10.1.1.104 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA/HQMabL2hR0qKrNxJU34WWLvKjnjT9FFbRYk5EcsZMNAFR+k0sXUT8YjSRNiAQlRfWNRp8Wbxh7XGvQ9YJpzxxkQA9LP+W/O4e+2TMKt3vfDLP0M6SWuykQ+aChpQokXouNGZsHo3Y1xa7ysgvV4CVAl6ItxjdeKkCy2oiArggnIiKYVtFg20Y44SzxH7ycdnLdj09ftIsZZlkC1Bld4x1i5QUmUkzJEgHsLj0rpe4U8gfbrhJw5m02Y6cE655XPpFxuP7VF/L8a8i0+SEKgwO8FfSUngKfn2YjKlgXKstyVJvK+nCKXRT6XNTNE5f5uSUIcEsWrTn+OPKfoClpJew== 一个关于ssh的小错误 [root@localhost ~]# ssh 10.1.1.104 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is 7f:7b:7e:55:bf:28:4b:be:34:22:1c:42:39:cc:f8:ff. Please contact your system administrator. Add correct host key in /root/.ssh/known_hosts to get rid of this message. Offending key in /root/.ssh/known_hosts:6 RSA host key for 10.1.1.104 has changed and you have requested strict checking. Host key verification failed. --遇到此报错,有可能是因为104的IP被另一台电脑使用,就把/root/.ssh/known_hosts里关于104电脑的RSA KEY信息给删除掉 就可以再加了 ssh user1@10.1.1.104 --以用户user1远程登录 [root@localhost ~]# ssh 10.1.1.104 date --直接调用104上的命令,但不能调图形 root@10.1.1.104's password: Sat Apr 10 14:37:05 CST 2010 ssh 10.1.1.104 -X firefox --图形调用104机器的firefox ssh 10.1.1.104 -Y --登陆到104的主机后,可以任意调用图形 调图形要注意的是远程服务器要图形支持 scp 远程拷贝 [root@localhost ~]# scp /share/iso/rhel-5.4-server-i386-dvd.iso 10.1.1.104:/root/Desktop/ --把本机的一个ISO文件远程SCP到104的桌面 scp -r /share/iso/ 10.1.1.104:/root/Desktop/ --远程SCP目录时要用到-r参数 scp 10.1.1.104:/root/Desktop/sn.txt /root/Desktop/ --从远端拷到本端 scp -r 10.1.1.104:/root/Desktop/ /root/Desktop/ --拷目录也要加-r参数 scp -r aaa.bb.com:/root/Desktop/ /root/Desktop/ --可以用主机名替代IP,但要写到/etc/hosts里 你ssh另一台机器可能会卡上几秒钟,才会让你输入密码,解决方法:互相绑定主机名 hostname --打印出当前主机名 修改主机名三步: hostname li.cluster.com --临时修改当前主机名 vim /etc/sysconfig/network --系统全局的网络配置文件 HOSTNAME=li.cluster.com --永久修改当前主机名 FQDN(full qualified domain name)有些软件是要求主机名为fqdn格式,例如apache vim /etc/hosts 10.1.1.10 li.cluster.com --在这里加上修改过的主机和IP对应 windows下你可以下载security crt或putty这种图形ssh工具来远程连接你的linux服务器 ========================================================================= 改服务器IP的方法: 第一种: ifconfig eth0 10.1.1.10 netmaks 255.255.255.0 --这种做法是马上生效,但重启系统后无效了 如果你想IP重启也生效,那么需要配置网络服务的相关配置文件 第二种: vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 --定义设备号 BOOTPROTO=dhcp --定义获取IP的方式为dhcp ONBOOT=yes --定义此网卡设备是否启动 NM_CONTROLLED="no" --改为no,表示不受NetworkManager此服务控制(NetworkManager是rhel6里新加的一个图形界面配置网络的服务,但对于技术人员来讲,不建议使用。以后你会接触到kvm虚拟机或rhcs红帽集群套装都会不支持些服务) DEVICE=eth0 BOOTPROTO=static --定义获取IP的方式为static 静态IP IPADDR=10.1.1.10 --定义静态IP NETMASK=255.255.255.0 --定义子网掩码 GATEWAY=10.1.1.1 --手动定义你的网关,就是route -n命令看到的默认网关 这一句也可以写到/etc/sysconfig/network这个文件下(是全局生效,就是对所有网卡都生效) ONBOOT=yes NM_CONTROLLED="no" dns1=x.x.x.x dns2=x.x.x.x --你也可以在这里配置你的DNS指向,如果不想配置在这也可以,你可以配置到/etc/resolv.conf文件里 # /etc/init.d/NetworkManager stop # chkconfig NetworkManager off /etc/init.d/network restart --重启网络服务 ifconfig eth0:0 10.1.1.36 netmask 255.255.255.0 --在eth0的基础上虚拟出eth0:0的网卡 [root@localhost ~]# ifconfig eth0:1 10.1.1.37 netmask 255.255.255.0 [root@localhost ~]# ifconfig eth0:2 10.1.1.38 netmask 255.255.255.0 手动修改物理地址的方法: 先要ifconfig eth0 down ifconfig eth0 hw ether 00:01:22:AB:EF:CD ifconfig eth0 up vim /etc/sysconfig/network-scripts/ifcfg-eth0:0 --虚拟的网卡重启后没了,想让他永久生效,手动写一个配置文件就可以了 DEVICE=eth0:0 BOOTPRO=static IPADDR=10.1.1.36 NETMASK=255.255.255.0 ONBOOT=yes NM_CONTROLLED="no" [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0-range0 --一次性虚拟多个IP IPADDR_START=10.1.1.37 --虚拟的IP起始值 IPADDR_END=10.1.1.50 --虚拟的IP结束值 NETMASK=255.255.255.0 --子网掩码 CLONENUM_START=10 --指的是eth0:后的数字起始值 关闭网卡的方法 ifconfig eth0 down ifdown eth0 开启网卡的方法 ifconfig eth0 up ifup eth0 ========================================================================= 环境变量 env --看环境变量 set --除了环境变量,还能看自定义变量 [root@li ~]# abc="hello world" [root@li ~]# env | grep abc [root@li ~]# set | grep abc --set可以查出这个自定义变量 abc='hello world' # echo $PATH /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin # echo $USER root # echo $HOME /root # echo $RANDOM --产生一个随机数,范围大概是0-32768 # echo $PS1 --这是终端前的命令提示符 [\u@\h \W]\$ 用户的环境变量设定文件,在每个用户的家目录里都会有下面四个文件 .bash_logout --用户登出后执行的 可以在这里加上清除.bash_history的命令,在用户登出时清掉之前的操作 .bash_history --用户的历史命令存放的地方 用history命令可以查看,它不记录当前会话用过的命令,当你退出时,它才会记录你退出前所操作的命令 .bash_profile --用户的环境变量设定的地方 用户登录时执行 .bashrc --别名设定的文件 用户登录时执行 系统默认在root用户家目录里的.bashrc里设定了以下几个别名 # vim /root/.bashrc alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' --这三个命令都已经做了-i参数的别名,是系统为了安全性防止用户误操作设定的 系统全局环境变量文件 /etc/bashrc /etc/profile --这两个文件是对所有用户都生效,全局性的 例1:为了安全性考虑,我希望我对一个用户操作的命令不能被别人查到 vim /home/abc/.bash_logout history -c --加这一句表示把当前会话的所有命令记录清空 rm -rf .bash_history --把此文件删掉,也就表示不会有以前的命令记录 扩展:假设你的上级要求你每天把你操作的命令在下班后以邮件的形式发给他,而且还要考虑到安全,操作后命令记录要被清空 # vim /home/abc/.bash_profile logintime=`date +%T` --加上这句,记录登录的时间 # vim /home/abc/.bash_logout clear history -w echo "开始时间为$logintime" >> history_record_today.txt cat .bash_history >> history_record_today.txt echo -e "结束时间为`date +%T`\n" >> history_record_today.txt history -c rm -rf .bash_history 把下面两句写一个脚本,然后用时间任务在下班后的一个时间点定时去做就可以了 mail -s "`date +%F` record from zhangsan" boss < history_record_today.txt rm -rf history_record_today.txt 2,实现用户一登录,我就用一个文本来记录什么用户什么时间登录的 格式如: user1 2014-07-17 18:00:00 # touch /tmp/login # chmod 777 /tmp/login # vim /etc/profile echo "$USER `date +'%F %T'`" >> /tmp/login # source /etc/profile # . /etc/profile --这两条是让你修改过的环境变量文件生效,rhel5需要做,现在rhel6可以不用做这一步 3,实现root用户密码的自动更改(一般来说,这种需求是用时间任务去做的);这里我要求是用户一登录,密码就变了,也就是说下一次登录的密码不一样了。密码随意。(最好用虚拟机来测试) 密码修改提示: echo 123 | passwd --stdin root &> /dev/null vim /root/.bash_profile echo "helloworld`date +%Y%m%d`" | passwd --stdin root &> /dev/null 或者 echo "helloworld$RANDOM" | passwd --stdin root &> /dev/null --密码你可以改完后,把它用重定向的方法重定向到一个文件保存下来 4,实现一个普通用户登出时,显示登录了多久 如abc用户登出时,会自动显示"你好,abc,你一共登录了xx时xx分xx秒,bye bye" 提示: 两个变量的相减运算$[$a-$b] # vim /home/abc/.bash_profile logintime=`date +%s` # vim /home/abc/.bash_logout clear logouttime=`date +%s` alltime=$[$logouttime-$logintime] hours=$[$alltime/3600] minutes=$[$alltime%3600/60] seconds=$[$alltime%60] echo "你好,$USER,你一登录$hours时$minutes分$seconds>秒,bye bye" 上面这个做法只针对了一个用户,如果我现在有很多用户,都要做这个,如何实现* 第一种,把上面写成shell脚本循环执行 第二种, 先说一下useradd abc这条命令到处执行了哪些步骤 useradd abc 的七步: 一。 /etc/passwd 加上abc:x:532:533::/home/abc:/bin/bash 二。 /etc/shadow 加上abc:!!:14709:0:99999:7::: --密码可以用grub-md5-crypt 命令建立 三。 /etc/group 加上abc:!!:14709:0:99999:7::: 四。 /etc/gshadow 加上abc:!:: 五。 mkdir /home/abc --建立家目录 手动建立后注意属主和属组 六 touch /var/spool/mail/abc --建立用户的存放邮件的文件 手动建立后注意属主和属组 七。 cp /etc/skel/.bash* /home/abc/ --拷环境变量模版到用户家目录 ls /etc/skel/ -a .bash_logout .bash_profile .bashrc 通过讲了useradd abc的步骤,第二种方法就可以想到了,就是把上面的做法写到/etc/skel/.bash_profile和/etc/skel/.bash_logout里.然后建立任何用户都会拷贝这些已经修改好的。但这种方法比较适合用户都还没有建立的情况,第一方法就无所谓。 5,实现一个普通用户30秒不操作则自动退出 在用户的家目录里的.bash_profile里加上下面一句 TMOUT=30