我正在尝试编写一个shell脚本来检查数据库连接。在我的脚本中,我使用命令使用Shell脚本检查数据库连接
sqlplus uid/[email protected]
连接到我的Oracle数据库。
现在我想在临时文件中保存此命令生成的输出(在它放到SQL提示符之前),然后从该文件grep /找到字符串“连接到”以查看连接是否正常。
任何人都可以请帮助我赶上输出并摆脱那个提示,并测试连接是否正常?
我正在尝试编写一个shell脚本来检查数据库连接。在我的脚本中,我使用命令使用Shell脚本检查数据库连接
sqlplus uid/[email protected]
连接到我的Oracle数据库。
现在我想在临时文件中保存此命令生成的输出(在它放到SQL提示符之前),然后从该文件grep /找到字符串“连接到”以查看连接是否正常。
任何人都可以请帮助我赶上输出并摆脱那个提示,并测试连接是否正常?
使用的脚本是这样的:
#!/bin/sh
echo "exit" | sqlplus -L uid/[email protected] | grep Connected > /dev/null
if [ $? -eq 0 ]
then
echo "OK"
else
echo "NOT OK"
fi
回声“退出”可以确保你立刻退出了(这被输送到SQLPLUS )。 -L保证sqlplus在密码不正确的情况下不会要求输入密码(这也会使它被卡住)。
(>的/ dev/null的只是隐藏来自grep的输出,我们并不需要,因为结果是通过$访问?在这种情况下)
您可以通过执行避免SQL提示:
sqlplus uid/[email protected] < /dev/null
sqlplus中立即退出。
现在只要用grep上面的输出:
if sqlplus uid/[email protected] < /dev/null | grep 'Connected to'; then
# have connectivity to Oracle
else
# No connectivity
fi
是的它一直在揭露密码一个不错的选择!谢谢Jochem和codaddict ... – mohona 2010-09-27 06:51:26
#!/bin/bash
output=`sqlplus -s "user/[email protected] " <<EOF
set heading off feedback off verify off
select distinct machine from v\\$session;
exit
EOF
`
echo $output
if [[ $output =~ ERROR ]]; then
echo "ERROR"
else
echo "OK"
fi
感谢您的答案iddqd。 – mohona 2010-10-04 08:10:39
#! /bin/sh
if echo "exit;" | sqlplus UID/[email protected] 2>&1 | grep -q "Connected to"
then echo connected OK
else echo connection FAIL
fi
不知道是否“已连接到“消息被放到标准输出或标准错误,这将同时检查。 “qrep -q”而不是“grep ...>/dev/null”假定Linux。
谢谢你的答案。 – mohona 2010-10-04 08:11:13
这里是不命令行
#!/bin/bash
CONNECT_STRING=<USERNAME>/<PASS>@<SID>
sqlplus -s -L /NOLOG <<EOF
whenever sqlerror exit 1
whenever oserror exit 1
CONNECT $CONNECT_STRING
exit
EOF
SQLPLUS_RC=$?
echo "RC=$SQLPLUS_RC"
[ $SQLPLUS_RC -eq 0 ] && echo "Connected successfully"
[ $SQLPLUS_RC -ne 0 ] && echo "Failed to connect"
exit SQLPLUS_RC
非常感谢你们所有人的投入......是的,但是我在那一天自己尝试过,但是有点晚了。 – mohona 2010-09-27 06:50:01