linux命令无效-bash: ls: command not found

一次重启后开机,基本所有的命令都不可用,只有少数的命令可用

[root@centos-1 ~]# ll

-bash: ls: command not found

[root@centos-1 ~]# pwd

/root

[root@centos-1 ~]# shutdown -r now

-bash: shutdown: command not found

[root@centos-1 ~]# export $PATH

-bash: export: `/usr/java/jdk1.7.0_55/bin::/root/bin': not a valid identifier

[root@centos-1 ~]#

export $PATH,可能是PATH路径设置问题

1.先临时设置PATH

export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

修改配置文件,发现有代码错误,原来是配置JAVA路径的时候,PATH拼写出错

#vi /etc/profile

export JAVA_HOME=/usr/java/jdk1.7.0_55

export JAVA_BIN=/usr/java/jdk1.7.0_55/bin

export PATH=$JAVA_HOME/bin:$PAH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar

重启解决.


centos下mysql修改datadir和socket相关路径

有时候我们希望使用别的目录来代替mysql默认使用的/var/lib/mysql目录存储数据。

为了完成这个需求,我们需要几步来实现:

1,修改selinux为permissive或disable

2,将目录的权限修改为mysql用户所有和属组

3,修改/etc/my.cnf

将datadir和socket修改为你需要的路径

这步做完后,mysql-server就可以正常启动了,并且可以看到data文件和socket文件已经存入你指定的目录中。但是当你使


用本地mysql客户端连接服务端的时候,会发现系统依然提示你找不到“/var/lib/mysql/mysql.sock”这个sock文件,这时候


继续下一步

4,在/etc/my.cnf中添加一段

[client]

socket=[你指定的文件]

ok,这样重启mysql-server后就可以正常连接了。


使用mysql_secure_installation仍然会提示无法找到“/var/lib/mysql/mysql.sock”文件,打开

mysql_secure_installation命令脚本,它在/usr/bin目录下。

在make_config这个函数中添加一段

echo "socket=[你指定的文件,同上设置]" >>$config

保存文件后就可以正常使用了。



解决Windows8下Cisco Systems ××× Client的Reason 442: Failed to Enable Virtual Adapter错误

Windows8下使用Cisco Systems ××× Client创建的Cisco IPSec ×××无法连接,提示Reason 442: Failed to Enable Virtual Adapter,这个问题是Windows8特有的,不能用其他系统的解决方案解决此问题.下面给出解决方案.

1.打开注册表编辑器(需使用管理员权限)

2.找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CVirtA

选择名称为DisplayName的项,修改数值.

4.如果是x86(即32位)版本则将类似@oem8.inf,%CVirtA_Desc%;Cisco Systems ××× Adapter的值修改为Cisco Systems ××× Adapter

5.如果是x64(即64位)版本则将类似@oem8.inf,%CVirtA_Desc%;Cisco Systems ××× Adapter for 64-bit Windows的值修改为Cisco Systems ××× Adapter for 64-bit Windows

6.在Cisco Systems ××× Client中点击Connect按钮,成功连接.

Cisco ××× Client for linux 安装与使用

官网:http://projects.tuxx-home.at/?id=cisco_vpn_client
软件下载地址: http://projects.tuxx-home.at/ciscovpn/clients/
patch下载地址:http://projects.tuxx-home.at/ciscovpn/patches/

安装方法:

没有装过kernel的开发包的话,那么是时候需要升级一下你的kernel了(安装了kernel-devel的不需要做下面的操作)

yum -y install kernel kernel-devel

下载vpn client

wget http://projects.tuxx-home.at/ciscovpn/clients/linux/4.8.02/vpnclient-linux-x86_64-4.8.02.0030-k9.tar.gz
tar zxvf vpnclient-linux-x86_64-4.8.02.0030-k9.tar.gz
cd vpncliet

此时,根据你内核的版本,来决定是否需要打补丁~毕竟这个软件是非官方的,对于2.6.24以上的内核不是很支持~(打补丁的方法见最后)

如果你和我一样内核版本较低,不需要打补丁,则可以直接运行安装

./vpn_install

安装开始会让你设置各项参数,之后安装结束,这里需要注意的是它将会读取你内核开发组件的路径,你要确保路径正确。
Directory where binaries will be installed [/usr/local/bin]
#
Automatically start the ××× service at boot time [yes]
#
In order to build the ××× kernel module, you must have the
kernel headers for the version of the kernel you are running.
#
For RedHat 6.x users these files are installed in /usr/src/linux by default
For RedHat 7.x users these files are installed in /usr/src/linux-2.4 by default
For Suse 7.3 users these files are installed in /usr/src/linux-2.4.10.SuSE by default
#
Directory containing linux kernel source code []/usr/src/kernels/2.6.18-194.11.3.el5-i686
#
* Binaries will be installed in “/usr/local/bin”.
* Modules will be installed in “/lib/modules/2.6.18-194.11.3.el5/Cisco×××”.
* The ××× service will be started AUTOMATICALLY at boot time.
* Kernel source from “/usr/src/kernels/2.6.18-348.4.1.el5-i686″ will be used to build the module.
#
Is the above correct [y]

当一切安装结束之后:
连接×××的配置都在/etc/opt/cisco-vpnclient/Profiles中,里面默认已经有一个叫做simple.pcf的模板文件,不过我们基本用不上。
在其中加入一个新的配置 XXX.pcf (名字随意,主要是为了好识别这个vpn配置文件是连接哪的)。
配置文件的内容参考使用win版××× client连接之后,安装目录中Profiles内的pcf文件,直接复制即可

启动vpnclient服务
/etc/init.d/vpnclient_init start

拨通vpn (XXX为Profile目录下的自己定义的名字)
nohup vpnclient connect XXX > /dev/null &

后续,打补丁的方法:
下载你需要的patch,然后进入解压后的目录,打补丁,安装。
wget -q http://projects.tuxx-home.at/ciscovpn/patches/vpnclient-linux-2.6.24-final.diff
cd vpnclient
patch <../vpnclient-linux-2.6.24-final.diff
patching file GenDefs.h
patching file interceptor.c
./vpn_install


监控利器:CactiEZ及无数据,无图像解决

    CactiEZ中文版是最简单有效的Cacti中文解决方案,整合Spine,RRDTool和美化字体。

集成Thold,Monitor,Syslog,Weathermap,Realtime,Errorp_w_picpath,Mobile,Aggregate以及Apache,Squid,F5,Nginx,MySQL等模板。支持多种硬盘控制器和阵列卡,基于CentOS6,启动速度更快,支持EXT4文件系统,原生rsyslog更稳定。全中文页面,中文图形,支持邮件报警,支持声音报警,安装方便使用简单。

CactiEZ中文版10.1:

下载地址:32位: http://www.zhengfeng.net/CactiEZ-10.1-i386.torrent

         64位: http://www.zhengfeng.net/CactiEZ-10.1-x86_64.torrent

CactiEZ还是有英文版的  http://cactiusers.org/ 这个网站去下载英文版。

http://www.crazycen.com/linux/1164.html

cacti无图像或者无数据解决方法:

1.system utilities –>Rebuild poller cache 
2.系统时间不准确,重新设置时间 
3.图像没有生成,运行#/usr/bin/php /srv/www/htdocs/cacti/poller.php –force 
4.权限问题,修改权限#chmod 777 -R /srv/www/htdocs/cacti/rra 
5.数据库表有损坏,修复#mysqlcheck -ao cacti –auto-repair -uroot -p 
6.重启snmpd服务#service snmpd restart


Icinga 中文版

Icinga其实就是nagios的二次开发,他包括了nagios的所有功能,甚至可以直接把nagios的配置文件拿来用。icinga-cn是专门的中文项目,更适合国人使用。

中文版地址:http://icinga-cn.sourceforge.net/



几个常用的Linux主机性能监控脚本

1、查看主机网卡流量

#!/bin/bash
#network
#Mike.Xu
while : ; do
time=‘date +%m“-”%d“ ”%k“:”%M’
day=‘date +%m“-”%d’
rx_before=‘ifconfig eth0|sed -n “8”p|awk ’{print $2}‘|cut -c7-’
tx_before=‘ifconfig eth0|sed -n “8”p|awk ’{print $6}‘|cut -c7-’
sleep 2
rx_after=‘ifconfig eth0|sed -n “8”p|awk ’{print $2}‘|cut -c7-’
tx_after=‘ifconfig eth0|sed -n “8”p|awk ’{print $6}‘|cut -c7-’
rx_result=$[(rx_after-rx_before)/256]
tx_result=$[(tx_after-tx_before)/256]
echo “$time Now_In_Speed: ”$rx_result“kbps Now_OUt_Speed: ”$tx_result“kbps”
sleep 2
done

2、系统状况监控

#!/bin/sh
#systemstat.sh
#Mike.Xu
IP=192.168.1.227
top -n 2| grep “Cpu” 》》。/temp/cpu.txt
free -m | grep “Mem” 》》 。/temp/mem.txt
df -k | grep “sda1” 》》 。/temp/drive_sda1.txt
#df -k | grep sda2 》》 。/temp/drive_sda2.txt
df -k | grep “/mnt/storage_0” 》》 。/temp/mnt_storage_0.txt
df -k | grep “/mnt/storage_pic” 》》 。/temp/mnt_storage_pic.txt

time=
date +%m“。”%d“ ”%k“:”%M
connect=
netstat -na | grep “219.238.148.30:80” | wc -l
echo “$time $connect” 》》 。/temp/connect_count.txt

3、监控主机的磁盘空间,当使用空间超过90%就通过发mail来发警告

#!/bin/bash
#monitor available disk space
SPACE=‘df | sed -n ’/ \ / $ / p‘ | gawk ’{print $5}‘ | sed ’s/%//‘
if [ $SPACE -ge 90 ]
then
123456789@qq.com
fi

4、 监控CPU和内存的使用情况

#!/bin/bash
#script to capture system statistics
OUTFILE=/home/xu/capstats.csv
DATE=’date +%m/%d/%Y‘
TIME=’date +%k:%m:%s‘
TIMEOUT=’uptime‘
VMOUT=’vmstat 1 2‘
USERS=’echo $TIMEOUT | gawk ‘{print $4}’ ‘
LOAD=’echo $TIMEOUT | gawk ‘{print $9}’ | sed “s/,//‘ ’
FREE=‘echo $VMOUT | sed -n ’/[0-9]/p‘ | sed -n ’2p‘ | gawk ’{print $4} ‘ ’
IDLE=‘echo $VMOUT | sed -n ’/[0-9]/p‘ | sed -n ’2p‘ |gawk ’{print $15}‘ ’
echo ”$DATE,$TIME,$USERS,$LOAD,$FREE,$IDLE“ 》》 $OUTFILE

5、全方位监控主机

#!/bin/bash

# check_xu.sh

# 0 * * * * /home/check_xu.sh

DAT=”
date +%Y%m%d
“

HOUR=”
date +%H
“

DIR=”/home/oslog/host_${DAT}/${HOUR}“

DELAY=60

COUNT=60

# whether the responsible directory exist

if ! test -d ${DIR}

then

/bin/mkdir -p ${DIR}

fi

# general check

export TERM=linux

/usr/bin/top -b -d ${DELAY} -n ${COUNT} 》 ${DIR}/top_${DAT}.log 2》&1 &

# cpu check
/usr/bin/sar -u ${DELAY} ${COUNT} 》 ${DIR}/cpu_${DAT}.log 2》&1 &

#/usr/bin/mpstat -P 0 ${DELAY} ${COUNT} 》 ${DIR}/cpu_0_${DAT}.log 2》&1 &

#/usr/bin/mpstat -P 1 ${DELAY} ${COUNT} 》 ${DIR}/cpu_1_${DAT}.log 2》&1 &

# memory check
/usr/bin/vmstat ${DELAY} ${COUNT} 》 ${DIR}/vmstat_${DAT}.log 2》&1 &

# I/O check
/usr/bin/iostat ${DELAY} ${COUNT} 》 ${DIR}/iostat_${DAT}.log 2》&1 &

# network check
/usr/bin/sar -n DEV ${DELAY} ${COUNT} 》 ${DIR}/net_${DAT}.log 2》&1 &

#/usr/bin/sar -n EDEV ${DELAY} ${COUNT} 》 ${DIR}/net_edev_${DAT}.log 2》&1 &

放在crontab里每小时自动执行:

0 * * * * /home/check_xu.sh


这样会在/home/oslog/host_yyyymmdd/hh目录下生成各小时cpu、内存、网络,IO的统计数据。

如果某个时间段产生问题了,就可以去看对应的日志信息,看看当时的主机性能如何。


print spooler服务启动后,自动停止,服务死锁

怀疑非正常关机,造成“Print Spooler服务”启动文件“spoolsv.exe”损坏。从其他机子上拷了一个spoolsv.exe来。覆盖,重启。故障依旧

删除 C:\WINDOWS\system32\spool\PRINTERS 目录下的所有文件;重启print spooler服务

开始->运行,输入regedit打开注册表编辑器
找到以下键值:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Spooler
选定Spooler这个文件夹,在右边窗口里找DependOnService这个键值

双击打开把数据改为RPCSS,确定后退出注册表编辑器,重启计算机。


删除注册表 \HKEY_LOCAL_MACHINE\SYSTEM\ControlSetoo1\Control\Print\Printers


目录下的所有打印机(注意不是目录一起删除)。



linux系统下的远程开机

1.服务器没有部署在本地,通常托管到IDC机房,而且服务器在机房中不止一台,其中一台被关闭时,则我们可以远程连接一台没有关机的服务器上,然后进行远程开机.


2.远程开机需要的软件:wakeonlan

yum install wol -y


3.如何进行远程开机?

先不要急着去关闭你的linux服务器,你首先要确定它是否支持远程开机?

1)登录到目标服务器,用ethtool这个命令打印出网卡的信息

[root@localhost lhd]# ethtool eth0

可以看到,ethtool 把网卡的信息全部列出,我们只关心其中的这两项:

  Supports Wake-on: pumbg

  Wake-on: d

如果 wake-on 一项值为 d,表示禁用wake on lan

值为 g,表示启用 wake on lan

因为此机器禁用了 wake on lan,所以用下面的命令来启用它:

[root@localhost lhd]# ethtool -s eth0 wol g

现在目标机器的网卡已经支持了远程开机,


下面我们得到它的本地MAC地址:

[root@localhost lhd]# ifconfig

eth0 Link encap:Ethernet HWaddr 00:03:0D:1D:1F:97

把HWaddr 00:03:0D:1D:1F:97这一项记录下来即可

现在你可以试着把目标机器关闭


2)开机

现在我们需要登录到已安装了wake on lan软件的机器上,在上面执行开机命令:

wol 00:03:0D:1D:1F:97

稍后就会发现,目标机器已开机可以登录了


wol的取值默认是d,含义是disable

修改后的值为g,含义是Wake on MagicPacket(tm)

当机器重启后,eth0的设置又会回复到Wake-on: d 状态,

3)这个问题怎么解决?

两个办法:第一个,也是我们的惯性思维;

把/sbin/ethtool -s eth0 wol g 这条命令附加到/etc/rc.local这个文件中,

则下次开机后会自动执行


第二个: 编辑/etc/sysconfig/network-scripts/ifcfg-eth0

(eth0网卡的配置文件),添加上一行:

ETHTOOL_OPTS=”wol g”


4,网络唤醒的局限性:

它只能在局域网中应用,而不能通过互联网运行,为什么?

因为机器关闭后,完全是靠网卡唤醒机器,此时的机器是关闭的,没有操作系统运行,

也就谈不上支持tcp/ip协议,当然也就不能通过互联网运行了.

也就是说:如果我们在某个局域网中只有一台机器,就不能使用此功能了.

我们必须能登录到局域网中的一台机器上,在此机器上运行 wake on lan 去唤醒目标机器

前提条件就是:目标机器和我们登录的机器在同一局域网中


5,还有一点:被远程开机的目标机器必须是插电的

下面简单介绍一下linux下的wakeonlan 的用法:

假设远程要唤醒的计算机IP:12.34.56.78,Mac地址:01:02:03:04:05:06

$ wakeonlan -i 12.34.56.78 01:02:03:04:05:06



htpasswd用法

#使用-c选项会重新生成选项指定的文件
[root@localhost conf]# htpasswd -c htpasswd.user aaa
New password:
Re-type new password:
Adding password for user aaa
[root@localhost conf]# cat htpasswd.user
aaa:Bb5sDJ18YXP..
[root@localhost conf]# htpasswd -cb htpasswd.user bbb bbb   用户名和密码都是bbb
Adding password for user bbb
[root@localhost conf]# cat htpasswd.user
bbb:jOmE6lLI7g45M

#添加用户推荐使用以下两种方式

[root@localhost conf]# htpasswd -n ccc >> htpasswd.user
New password:
Re-type new password:
[root@localhost conf]# cat htpasswd.user
bbb:jOmE6lLI7g45M
ccc:mAqD.htApgYNM
[root@localhost conf]# htpasswd -nb ddd ddd >> htpasswd.user
[root@localhost conf]# cat htpasswd.user
bbb:jOmE6lLI7g45M
ccc:mAqD.htApgYNM
空行
ddd:uAb7o0aUwD5pg
空行


linux防护ARP攻击

关键命令:

arping -U -I 发送包的网卡接口 -s 源ip 目的ip

实例:

假设你的eth0接口对应的ip为192.168.100.11,网关为192.168.100.2你就可以使用

arping -U -I eth0 -s 192.168.100.11 192.168.100.2


Linux系统用户root登录报错

输入root敲回车的时候出现如下提示:

    Your account is locked.Maximum amount of failed attempts was reached.

在单用户模式下

      pam_tally2 -u root  (faillog -u root<查看/var/log/faillog内记录的登陆失败信息>)显示root用户登录失败记录的次数

      pam_tally2 -u root -r  (faillog -u root -r<重置/var/log/faillog内记录的登陆失败信息>)将登录错误数重置为0

    然后重启(5级别模式下)输入用户名密码,提示Authontication failed.

    继续单用户模式

      authconfig --disableldap --update

    顺便 vim /etc/pam.d/system-auth

#%PAM-1.0

# This file is auto-generated.

# User changes will be destroyed the next time authconfig is run.

auth        requeired     pam_tally2.so   deny=5 lock_time=30 even_deny_root root_unlock_time=30

auth        required      pam_env.so

将红色字体前面加个#所有问题都解决,系统用户可以正常登陆。


Mysql数据库出现many connection errors错误的解决

MySQL连接不上去,查看错误日志时报下列错误

ERROR:db_mysql:db_mysql_connect: driver error(1129): Host 'bj-opensips-x86v-app01.clvn.com.cn' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

登录数据库

[root@web ~]# mysql -u root -p

查看max_connect_errors参数的值

mysql> show variables like '%max_connect_errors%';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| max_connect_errors | 10    |
+--------------------+-------+

修改该参数的值

mysql> set global max_connect_errors=1000;
Query OK, 0 rows affected (0.00 sec)

 查看是否修改成功

mysql> show variables like '%max_connect_errors%';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| max_connect_errors | 1000  |
+--------------------+-------+

重新连接MySQL数据库成功。


限定其中一台主机上网

Ping这台主机的ip地址192.168.1.1

再在windows下运行命令nbtstst –a 192.168.1.1 (需要限制上网的客户端地址)

找到这人的mac地址,网关机执行命令 

iptables –I INPUT –p tcp –mac –mac-source <该鸟人的mac地址> -j DROP

iptables –I FORWORD –p tcp –mac –mac-source <该鸟人的mac地址> -j DROP

重启防火墙服务。


解决dns攻击

http://369369.blog.51cto.com/319630/526239

登录思科5520防火墙

看看连接数

ASA5520#sh conn count

10782 in use,280001 most used

再看看什么连接最多

ASA5520#sh conn

UDP outside 192.41.162.30:53 inside 172.x.x.x:62234, idle 0:01:07, bytes 45, flags -
UDP outside 192.41.162.30:53 inside 172.x.x.x:59965, idle 0:01:07, bytes 44, flags -
UDP outside 192.41.162.30:53 inside 172.x.x.x:52096, idle 0:01:07, bytes 42, flags -
UDP outside 192.55.83.30:53 inside 172.x.x.x:64169, idle 0:00:14, bytes 95, flags -
UDP outside 192.55.83.30:53 inside 172.x.x.x:57522, idle 0:01:08, bytes 42, flags -
UDP outside 192.55.83.30:53 inside 172.x.x.x:53128, idle 0:01:11, bytes 41, flags -
UDP outside 192.42.93.30:53 inside 172.x.x.x:51221, idle 0:01:12, bytes 46, flags -

DNS服务器的连接数最多.说明有人在攻击我公司的DNS服务器。

先把DNS服务器对外的53端口屏蔽掉。

ASA5520#conf terminal

ASA5520(config)#no access-list pass-policy extended permit upd any host 211.151.x.x eq domain

打完这条命令,连接数立马降下来,然后趋于平常。

可在防火墙上定义可信IP列表,然后只让这些IP访问我公司的DNS。到网上去找全球的13台根域地址。

官网地址链接(http://www.root-servers.org/)

ASA5520(config)#object-group network dnsgroup

ASA5520(config)#network-object host 198.41.0.4

ASA5520(config)#network-object host 202.12.27.33(以上13台根域)

ASA5520(config)#network-object host 210.x.x.x(公司出口IP,作测试用)

ASA5520(config)#network-object host 202.96.209.5(上海dns)

ASA5520(config)#network-object host 202.106.0.20(北京dns)

ASA5520(config)#network-object host 202.96.128.86(广州dns)

ASA5520(config)#access-list pass-policy extended permit upd object-group dnsgroup host 211.151.x.x eq domain

放开全球根域及中国国内主要DNS访问我公司的DNS服务器。


Cisco 2960交换机排错

运维部一卡座网络端口,接了一台TP-LINK 16×××换机,突然有天,发现接在这个交换机上所有PC都不通了,简单检查了一下,发现此交换机进线口不亮灯(卡座口与TP-LINK交换机连接线),用测线仪测了下,发现8个灯亮,初步判断是弱电井的2960相应的端口被shutdown了,于是登录交换机查看端口,发现并没有administrator down,百思不得其解。
Linux运维常用知识(4)_linux

    测线仪测出,8根线都是亮的,说明网线是没有问题的,端口又没被shutdown,说明没有被管理员关闭。
    再登录交换机,show一下该端口情况,仔细一看,发现第一行后面的括号里有err-disabled信息,百度一下关键字“err-disabled”,得出解决办法。
Linux运维常用知识(4)_运维_02

    线路不通,物理指示灯灭,而测试仪显示8根线通,可show int status查下,通过该命令发现46口有err-disabled,理由是loopback。
Linux运维常用知识(4)_linux_03

    在缺省配置下,思科交换机端口被置为err-disabled,IOS将不会试图万利接口,必须手工将它恢复,于是再输入命令errdisable recovery cause lookup,配置完这个命令后,查看端口情况,还是err-disabled,这是因为恢复时间需要300秒,输入sh errdisable recovery查看下,还需要多少时间才能恢复,从图上看,需要257秒。耐心等257秒后,该端口正常,TP-LINK交换机上的PC也正常。

Linux运维常用知识(4)_运维_04

问题反思。
    这肯定是监控干的,在TP-LINK交换机上乱拉线,最后拉成环路了,思科交换机监控到环路,就把该端口置为错误端口,从而避免整个网络出现异常。当然思科交换机并不会自动去把有问题的端口置为环路,需要在每个端口下输入命令,控制广播风暴。