月度归档:2011年03月

关于linux的计划任务的细节说明,crontab

2. crontab与环境变量
不要假定cron知道所需要的特殊环境,它其实并不知道。所以你要保证在shelll脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。所以注意如下3点:
1)脚本中涉及文件路径时写全局路径;
2)脚本执行要用到java或其他环境变量时,通过source命令引入环境变量,如:
cat start_cbp.sh
#!/bin/sh
source /etc/profile
export RUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf
/usr/local/jboss-4.0.5/bin/run.sh -c mev &
3)当手动执行脚本OK,但是crontab死活不执行时。这时必须大胆怀疑是环境变量惹的祸,并可以尝试在crontab中直接引入环境变量解决问题。如:
0 * * * * . /etc/profile;/bin/sh /var/www/java/audit_no_count/bin/restart_audit.sh

3. 其他应该注意的问题
1)新创建的cron job,不会马上执行,至少要过2分钟才执行。如果重启cron则马上执行。
2)每条 JOB 执行完毕之后,系统会自动将输出发送邮件给当前系统用户。日积月累,非常的多,甚至会撑爆整个系统。所以每条 JOB 命令后面进行重定向处理是非常必要的: >/dev/null 2>&1 。前提是对 Job 中的命令需要正常输出已经作了一定的处理, 比如追加到某个特定日志文件。
3)当crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题。或者查看日志看某个job有没有执行/报错tail -f /var/log/cron。
4)千万别乱运行crontab -r。它从Crontab目录(/var/spool/cron)中删除用户的Crontab文件。删除了该用户的所有crontab都没了。
5)在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义\%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+\%Y\%m\%d’`。

bash中脚本控制输出中的颜色设置

bash中脚本控制输出中的颜色设置

ANSI控制码的说明
例如:
echo -ne “\33[32m” 可以将字符的显示颜色改为绿色,这个我常用来脚本执行结束之后来打印OK字样。
echo -ne “\33[3;1H” 可以将光标移到第3行第1列处
具体的摘抄一些如下:
\33[0m 关闭所有属性
\33[1m 设置高亮度
\33[4m 下划线
\33[5m 闪烁
\33[7m 反显
\33[8m 消隐
\33[30m — \33[37m 设置前景色
\33[40m — \33[47m 设置背景色
\33[nA 光标上移n行
\33[nB 光标下移n行
\33[nC 光标右移n行
\33[nD 光标左移n行
\33[y;xH设置光标位置
\33[2J 清屏
\33[K 清除从光标到行尾的内容
\33[s 保存光标位置
\33[u 恢复光标位置
\33[?25l 隐藏光标
\33[?25h 显示光标
所有的转移字符表:
\a ASCII 响铃字符(也可以键入 \007)
\d “Wed Sep 06” 格式的日期
\e ASCII 转义字符(也可以键入 \033)
\h 主机名的第一部分(如 “mybox”)
\H 主机的全称(如 “mybox.mydomain.com”)
\j 在此 shell 中通过按 ^Z 挂起的进程数
\l 此 shell 的终端设备名(如 “ttyp4″)
\n 换行符
\r 回车符
\s shell 的名称(如 “bash”)
\t 24 小时制时间(如 “23:01:01″)
\T 12 小时制时间(如 “11:01:01″)
\@ 带有 am/pm 的 12 小时制时间
\u 用户名
\v bash 的版本(如 2.04)
\V Bash 版本(包括补丁级别) ?/td>
\w 当前工作目录(如 “/home/drobbins”)
\W 当前工作目录的“基名 (basename)”(如 “drobbins”)
\! 当前命令在历史缓冲区中的位置
\# 命令编号(只要您键入内容,它就会在每次提示时累加)
\$ 如果您不是超级用户 (root),则插入一个 “$”;如果您是超级用户,则显示一个 “#”
\xxx 插入一个用三位数 xxx(用零代替未使用的数字,如 “\007″)表示的 ASCII 字符
\\ 反斜杠
\[ 这个序列应该出现在不移动光标的字符序列(如颜色转义序列)之前。它使 bash 能够正确计算自动换行。
\] 这个序列应该出现在非打印字符序列之后。

这样,您已经知道了 bash 中用反斜杠转义的全部专用序列。请稍微演练一下这些序列,以对它们的工作方式获得一些感性认识。在您做了一些测试之后,下面开始添加颜色。

ntpd

  默认情况下,我们配置的NTP服务器不会去时间源那里同步时间,所以必须修改/etc/ntp/step-tickers文件,加入我们的时间源,这样每次通过/etc/init.d/ntpd 来启动服务的时候就会自动更新时间了

snmpd的日志手册

LOGGING OPTIONS
The mechanism and destination to use for logging of warning and error mes-
sages can be controlled by passing various parameters to the -L flag.

-Le Log messages to the standard error stream.

-Lf FILE
Log messages to the specified file.

-Lo Log messages to the standard output stream.

-Ls FACILITY
Log messages via syslog, using the specified facility (’d’ for
LOG_DAEMON, ’u’ for LOG_USER, or ’0’-’7’ for LOG_LOCAL0 through
LOG_LOCAL7).

There are also "upper case" versions of each of these options, which allow
the corresponding logging mechanism to be restricted to certain priorities
of message. Using standard error logging as an example:

-LE pri
will log messages of priority ’pri’ and above to standard error.

-LE p1-p2
will log messages with priority between ’p1’ and ’p2’ (inclusive)
to standard error.

For -LF and -LS the priority specification comes before the file or facil-
ity token. The priorities recognised are:

0 or ! for LOG_EMERG,
1 or a for LOG_ALERT,
2 or c for LOG_CRIT,
3 or e for LOG_ERR,
4 or w for LOG_WARNING,
5 or n for LOG_NOTICE,
6 or i for LOG_INFO, and
7 or d for LOG_DEBUG.

Normal output is (or will be!) logged at a priority level of LOG_NOTICE

oracle基础学习

安装。。。。。。稍稍有点linux基础的都会安装,尤其是运维人员,不再表述

oracle启动:
1、设置环境变量
$export ORACLE_HOME=/home/oracler/app/oracler/product/11.2.0/dbhome_1
$export ORACLE_SID=orcl

2、启动,连接
$sqlplus

oracle账户基础

sys和system用户的区别
【system】用户只能用normal身份登陆em。
【sys】用户具有“SYSDBA”或者“SYSOPER”权限,登陆em也只能用这两个身份,不能用normal。
“SYSOPER”权限,即数据库操作员权限,权限包括:
打开数据库服务器 关闭数据库服务器
备份数据库 恢复数据库
日志归档 会话限制
“SYSDBA”权限,即数据库管理员权限,权限包括:
打开数据库服务器 关闭数据库服务器
备份数据库 恢复数据库
日志归档 会话限制
管理功能 创建数据库

normal 、sysdba、 sysoper有什么区别
normal 是普通用户 只有登陆的权限
另外两个,你考察他们所具有的权限就知道了
sysdba拥有最高的系统权限
sysoper主要用来启动、关闭数据库,sysoper 登陆后用户是 public
sysdba登陆后是 sys

SQL> conn / as sysdba已连接。
SQL> grant sysoper to test;

授权成功。

SQL> conn test/test as sysoper;
已连接。
SQL> show user
USER 为”PUBLIC”
SQL> conn test/test as sysdba
已连接。
SQL> show user
USER 为”SYS”
SQL>

dba和sysdba的区别
dba、sysdba这两个系统角色有什么区别呢
在说明这一点之前我需要说一下oracle服务的创建过程
·创建实例
·启动实例
·创建数据库(system表空间是必须的)
启动过程
·实例启动
·装载数据库
·打开数据库

sysdba,是管理oracle实例的,它的存在不依赖于整个数据库完全启动,
只要实例启动了,他就已经存在,以sysdba身份登陆,装载数据库、打开数据库
只有数据库打开了,或者说整个数据库完全启动后,dba角色才有了存在的基础!

Nagios分布式配置

摘自:http://www.comeonsa.com/2010/08/nagios%e5%88%86%e5%b8%83%e5%bc%8f%e9%85%8d%e7%bd%ae/comment-page-1/#comment-237

Nagios分布式配置
2010年8月14日 k9.huang 发表评论 阅读评论
nagios的分布式是通过在主服务端开启nsca接口进行内容的接收,客户端通过调用send_nsca程序,进行内容的传输,服务端在接收到约定格式的内容后,进行告警。以下内容省略了,nagios的主服务端与分布式服务端的安装步骤。

一、NSCA插件安装与配置
http://nchc.dl.sourceforge.net/sourceforge/nagios/nsca-2.7.2.tar.gz

编译安装nsca:
查看源代码打印帮助0 ./configure && make all

nagios主服务端:
1.拷贝nsca相关文件至nagios目录
查看源代码打印帮助0 cp sample-config/nsca.cfg /usr/local/nagios/etc/

1 cp src/nsca /usr/local/nagios/bin/

2 chown nagios.nagios /usr/local/nagios/etc/nsca.cfg

3 chown nagios.nagios /usr/local/nagios/bin/nsca

2.配置nsca.cfg文件中password
查看源代码打印帮助0 vi /usr/local/nagios/etc/nsca.cfg #去掉password前面的#,设置密码

1 password=xxx

3.开启nsca程序
查看源代码打印帮助0 /usr/local/nagios/bin/nsca -c /usr/local/nagios/etc/nsca.cfg

4.开启防火墙5667端口
查看源代码打印帮助0 iptables -I RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 5667 -j ACCEPT

nagios分布式服务端:
1.拷贝send_nsca相关文件至nagios目录
查看源代码打印帮助0 cp sample-config/send_nsca.cfg /usr/local/nagios/etc/

1 cp src/send_nsca /usr/local/nagios/bin/

2 chown nagios.nagios /usr/local/nagios/etc/send_nsca.cfg

3 chown nagios.nagios /usr/local/nagios/bin/send_nsca

2.配置nsca.cfg文件中password
查看源代码打印帮助0 vi /usr/local/nagios/etc/send_nsca.cfg #去掉password前面的#,配置与主服务端相同的密码

1 password=xxx

二、Nagios主服务端与分布式服务端配置
nagios主服务端:
1.修改nagios.cfg文件
查看源代码打印帮助0 vi /usr/local/nagios/etc/nagios.cfg

1 #修改以下参数值

2 check_external_commands=1

3 accept_passive_service_checks=1

4 accept_passive_host_checks=1

2.修改服务与主机的监控,以下为配置示例,该示例定义的服务与主机应该与分布式服务端相同
查看源代码打印帮助00 define host{

01 name test

02 use generic-host

03 address 192.168.0.8 #分布式服务端内监控的主机地址

04 passive_checks_enabled 1 #开启被动检测模式

05 active_checks_enabled 0 #关闭主服务端对该主机的主动检测

06 }

07 define service{

08 use generic-service #根据实际情况修改

09 host_name test

10 service_description CPU Load

11 check_command check_nrpe!check_load

12 check_freshness 1 #开启强制刷新

13 freshness_threshold 450 #主服务端强制刷新的时间,具体含义请参考手册

14 passive_checks_enabled 1 #开启被动检测模式

15 active_checks_enabled 0 #关闭主服务端对该服务的主动检测

16 }

nagios分布式服务端:
1.修改nagios.cfg文件
查看源代码打印帮助0 vi /usr/local/nagios/etc/nagios.cfg

1 #修改以下参数值

2 enable_notifications=0

3 obsess_over_services=1

4 ocsp_command=submit_check_result

5 obsess_over_hosts=1

6 ochp_command=submit_check_result

2.创建submit_check_result脚本
查看源代码打印帮助00 vi /usr/local/nagios/libexec/submit_check_result

01 #!/bin/sh

02 # Arguments:

03 # = host_name (Short name of host that the service is

04 # associated with)

05 # = svc_description (Description of the service)

06 # = state_string (A string representing the status of

07 # the given service – “OK”, “WARNING”, “CRITICAL”

08 # or “UNKNOWN”)

09 # = plugin_output (A text string that should be used

10 # as the plugin output for the service checks)

11 #

12 # Convert the state string to the corresponding return code

13 return_code=-1

14 case “$3” in

15 OK)

16 return_code=0

17 ;;

18 WARNING)

19 return_code=1

20 ;;

21 CRITICAL)

22 return_code=2

23 ;;

24 UNKNOWN)

25 return_code=-1

26 ;;

27 esac

28 # pipe the service check info into the send_nsca program, which

29 # in turn transmits the data to the nsca daemon on the central

30 # monitoring server

31 /usr/bin/printf “%s\t%s\t%s\t%s\n” “$1” “$2” “$return_code” “$4” | /usr/local/nagios/bin/send_nsca -H 1.1.1.1(修改为主服务端的ip) -c /usr/local/nagios/etc/send_nsca.cfg
查看源代码打印帮助0 chmod +x /usr/local/nagios/libexec/submit_check_result

1 chown nagios.nagios submit_check_result

3.在command.cfg文件中定义submit_check_result命令
查看源代码打印帮助0 vi /usr/local/nagios/etc/objects/command.cfg

1 #加入以下内容

2 define command{

3 command_name submit_check_result

4 command_line /usr/local/nagios/libexec/submit_check_result $HOSTNAME$ ‘$SERVICEDESC$’ $SERVICESTATE$ ‘$SERVICEOUTPUT$’

5 }

4.配置示例
查看源代码打印帮助00 define host{

01 name test

02 use generic-host

03 address 192.168.0.8 #分布式服务端内监控的主机地址

04 }

05 define service{

06 use generic-service

07 host_name test

08 service_description CPU Load

09 check_command check_nrpe!check_load

10 }

BTW:请注意分布式服务端与主服务端定义主机与服务配置的区别,当分布式服务端定义了主机与服务时,同样需要在主服务端定义一次。freshness_threshold 强制刷新时间,主要的作用是当分布式服务端未提交新的数据时,服务端可以强制进行状态刷新,进行及时的预警。

如何在不安装分布式nagios的情况下,监控另一网络防火墙内的内网主机呢?其实方法很多,比如check_ssh,这里共享一个方法,该方法是同事nonamexz的创意,在此借花献佛。

通过nagios的自定义变量,在nrpe的命令行增加一个端口的参数,通过防火墙进行映射至内网不同的服务器

查看源代码打印帮助00 define command{

01 command_name check_NRPE #定义一个新的命令

02 command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -p $_HOSTPORT$ -t 60

03 }

04 define host{

05 name test

06 use generic-host

07 address 2.2.2.2 #需要监控的服务器的外网地址,比如防火墙地址

08 _PORT 5668 #自定义的外网端口,改端口是通过防火墙进行内的需要监控的服务器的nrpe的端口映射

09 }

10 define service{

11 use generic-service

12 host_name test

13 service_description CPU Load

14 check_command check_NRPE!check_load #这里定义的时候,使用自定义的nrpe

15 }

google的skipfish安全扫描

安装:
http://code.google.com/p/skipfish/wiki/SkipfishDoc
下载wget …….
先安装http://ftp.gnu.org/gnu/libidn/libidn-1.18.tar.gz
./configure
make
make install

完成后
wget http://code.google.com/p/skipfish/downloads/detail?name=skipfish-1.84b.tgz
直接make&&make install
需要openssl和openssl-devel

安装完成后,进入skipfish-1.84b目录,cp dictionaries/completes.wl skipfish.wl
运行:
./skipfish -o /root/scan.txt http://www.hardwork.cn即可

IIS中永久重定向的参数设置

IIS中永久重定向的使用(包括参数设置)-301

注:一直没研究过参数,也不知道有这些参数,今天才看到,惭愧啊。。。。。

首先,解释下什么是资源的永久重定向,通俗简单理解下,当你在浏览器中输入sina.com.cn(新浪首页)的时候,网址是不是变成www.sina.com.cn了?再说一些163.com、首先,解释下什么是资源的永久重定向,通俗简单理解下,当你在浏览器中输入sina.com.cn(新浪首页)的时候,网址是不是变成www.sina.com.cn了?再说一些163.com、qq.com都会变成www.xxx.com等的样式,使用的就是资源的永久重定向,只不过他们使用的不是IIS。这里只来说说IIS中使用永久重定向的参数的方法。下面将说下IIS6.0中使用重定向的方法。
前提假设,为了简化输入这里假设两个网址:AA-代表aa.com,BB-代表www.aa.com
一、如何设置重定向的方法?
1.打开IIS管理器;
2.展开“网站”,然后选择一个网站,右键点击选择“属性”,然后点击“主目录”选项卡;
3.在“主目录”选项卡中你会看到“此资源的内容来自:”然后下面是3个选项,分别是:
“此计算机上的目录(D)”;
“另一台计算机上的共享(S)”;
“重定向到URL(U)”
4.选择“重定向到URL(U)”,下面的选项会跟着变化
会出现“重定向到(C):”的输入框,这里就是要输入资源重定向网址的地方。
二、举例子说明重定向的方法
1.目标:将AA重定向到BB
2.方法:在IIS中分别设置AA和BB的主机头,按照“一”中说明的方法将AA里“重定向到URL(U)”里面输入BB的网址就,然后选择上“上面输入的准确URL”和“资源的永久重定向”(最好选择上,不然搜索引擎会以为你在作弊,HTTP返回值也会被正确响应为301了),这样可以完成AA重定向到BB。
3.测试:在浏览器中输入AA,看下是不是变成BB了?
三、带参数的AA如何重定向到BB
如果按照“二”中的方法测试http://aa.com/view.asp?id=1&host=www.hl6666.cn这个网址的时候,浏览器会访问www.aa.com,后面的参数是不会重定向的,那么如何带参数重定向?继续往下看吧
1.目标:将http://aa.com/view.asp?id=1&host=www.hl6666.cn重定向到http://www.aa.com/view.asp?id=1&host=www.hl6666.cn
2.方法:这个时候要在“重定向到URL(U)”里面输入参数了,输入的参数在本文结尾归纳,在输入框里面输入http://www.aa.com$S$Q
3.测试:这个时候再次输入http://aa.com/view.asp?id=1&host=www.hl6666.cn的时候看看是不是正确的被重定向到http://www.aa.com/view.asp?id=1&host=www.hl6666.cn了?
四、重定向的参数
$S-将请求的 URL 的后缀传递给新的 URL。后缀是用重定向的 URL 代替之后,初始 URL 中所保留的部分。如果未设置 EXACT_DESTINATION 标志,则结果目标 URL 的名称将具有所请求文件的名称(作为文件夹名称)以及文件名本身。
$P-将初始 URL 中的参数(如 querystring 参数)传递至新的 URL,不包括问号 (?)。
$Q-将初始 URL 中的参数(如 querystring 参数)传递至新的 URL,包括问号 (?)。
$V-传递请求的 URL,不包括服务器名和任何参数。要包含参数,可使用 $P 或 $Q 变量及 $V 变量。如果未设置 EXACT_DESTINATION 标志,则结果目标 URL 的名称将具有所请求文件的名称(作为文件夹名称)以及文件名本身。
参数还有很多,基本上最常用的就是$S和$Q,任意网址想要实现301的永久重定向只需设置$S和$Q就可以了。

文章举例子说明了IIS中使用重定向实现301的方法,例子中的网址,如果这些网址给您带来不便,请告之本人会尽快删除。