2018/04/17

Tiptop ERP AP主机通过外部SMTP发邮件

Redhat Linux本身内置了sendmail和postfix等邮件服务器工具,但配置相当麻烦,而且还会增加服务器性能的开销,所以如果只是想通过脚本监控OS和Database的运行状况,不如直接使用已有的SMTP服务器来发邮件。

首先,把本机的sendmail或postfix服务永久关闭。
#service sendmail stop 
#chkconfig sendmail off 
#service postfix stop 
#chkconfig postfix off
以上命令需以root身份执行。

完成后,还需要对mailx命令进行升级(至12.4 7/29/08,查询命令mailx -V),因为RHEL5本身的mailx版本较低(为8.1.1-44.2.2,查询命令rpm -qa|grep mailx),发送邮件会失败。

因为没有购买RHEL的服务,所以手动去http://www.filewatcher.com/m/mailx-12.4.tar.bz2.271482.0.0.html下载安装包,然后安装
#tar jxvf mailx-12.4.tar.bz2  
#cd mailx-12.4  
#make  
#make install UCBINSTALL=/usr/bin/install 
安装完成后,查看mailx的版本(命令whereis mailx),仍是旧的,是因其软链接需手动建立。
#cd /bin
#rm -rf mailx
#ln -s /usr/local/bin/mailx mailx 
再查询mailx的版本,发现已经是12.4 7/29/08了。

好了,接着开始配置连接外部SMTP服务器的信息,用vim或其他文本编辑工具打开/etc/nail.rc,添加以下内容:
set from=tiptop@maxwa.xyz
set smtp=smtp.maxwa.xyz
set smtp-auth-user=tiptop
set smtp-auth-password=yourpassword
set smtp-auth=login
保存退出后,就可以测试一下了。
echo "hello world" | mailx -v -s "Test only" max@maxwa.xyz 

参考资料:Linux公社  狗窝

2018/04/16

[转]Tiptop成本计算函数结构表


   p500_ask() –询问画面
   p500_del()—删除成本相关资料cch_file,ccg_file,,ccu_file, cct_file,ccc_file,cce_file
   p500()----成本计算主函数
 3.1.  p500_get_date()---获取成本计算日期
 3.2.  p500_last0()---取上期结存转本月期初
  3.2.1  p500_ckp_ccc()---ccc为空,则指定其为0
 3.3.  p500_ccc_0()---清空ccc_file,给一个零
 3.4.  p500_last()---取上期结存转本月期初
 3.5.  p500_wip()---处理 WIP 在制成
  3.5.1 wip_del()---delete ccg_file, cch_file,cce_file 该主件相关资料
  3.5.2 wip_1()---计算每张工单的 WIP-主件 部份 成本
  3.5.3 wip_2()---计算每张工单的 WIP-元件 投入 成本 (cch)
3.5.3.1 wip_2_1() --WIP-元件 上期期末转本期期初
3.5.3.2 wip_2_21()--WIP-元件 本期投入材料 (依工单发料/退料档)
  3.5.3.2.1 p500_cch_01() ---# cch 0
3.5.3.3 wip_ccg21()--计算每张工单的 WIP-主件 投入数量 -> 有争议
3.5.3.4 wip_2_22() ---  WIP-元件 本期投入人工制费
3.5.3.5 wip_2_23()--- WIP-元件 本期投入调整成本
  3.5.4 wip_3()---计算每张工单的 WIP-元件 转出 成本 (cch)
3.5.4.1 -- wip_32()---WIP-元件 本期转出成本 (实际成本制)
  3.5.4.1.1 p500_sub(l_sfa.sfa01,l_sfa.sfa03,l_sub_qty)
  3.5.4.1.2 p500_sub(l_cch.cch01,l_cch.cch04,l_sub_qty)
  3.5.5 wip_4()---计算每张工单的 WIP-主件 SUM  成本
 3.6.  p500_wip2()----处理重复性生产WIP(计算产品在制成本(,,)投入,)
  3.6.1 wip2_1()--计算产品WIP主件  ccg
  3.6.2 wip2_2()--计算每张工单的 WIP-元件 投入 成本 (cch)
    3.6.2.1 wip2_2_1()    # step 1. WIP元件 期初
    3.6.2.2 wip2_2_21()   # step 2-1. WIP元件 本期投入材料 (依发料/退料档)
    3.6.2.3 wip2_2_22()   # step 2-2. WIP元件 本期投入人工制费
    3.6.2.4 wip2_2_23()   # step 2-3. WIP元件 本期投入调整成本
  3.6.3 wip2_3()--计算每张工单的 WIP-元件 转出 成本 (cch)
  3.6.4 wip2_4()--计算产品WIP主件 SUM cch  (ccg)
 3.7.  p500_tlf()--- tlf_file 计算各类入出库数量, 采购成本
        p500_upd_cxa09(l_apb12,l_apb09,1)
        p500_ccc22_cost()
         p500_ccc44_cost()
 3.8.  p500_ccb_cost()---计算入库调整金额
 3.9.  p500_ccg_cost()---计算wip入库调整金额
 3.a.  p500_ccg3_cost()---计算wip入库调整金额(重复性生产)
 3.b.  p500_ccc_tot(p_sw)--- 计算所有出库成本及结存
        p500_ccc_ccc26()
        p500_ccc_ccc23()
  3.b.1 p500_tlf21_upd()----回写tlf21的成本--update 
        p500_get_tlf21(p_tlf01,p_tlf10,p_chr,p_flag)
 3.c.  p500_ccc_ins()----insert ccc
 3.d.  p500_can_upd()---加上销货收入调整金额
 3.e.  p500_rework()----计算重工工单
  3.e.1 p500_rework1()  ---先算 WIP 及 完成品入库
3.e.1.1 p500_wip_rework()  --处理 WIP 重工成本 (重工sfb99='Y')
   wip_1()       # 计算每张工单的 WIP-主件 部份 成本 (ccg)
   wip_2()       # 计算每张工单的 WIP-元件 投入 成本 (cch)
   wip_3()       # 计算每张工单的 WIP-元件 转出 成本 (cch)
   wip_4()       # 计算每张工单的 WIP-主件 SUM  成本 (ccg)
  3.e.2  p500_rework2()  ---再算所有出库成本及结存
    3.e.2.1 p500_ccg2_cost()    --加上WIP重工入库金额
    3.e.2.2 p500_ccc_tot('2')    --计算所有出库成本及结存
    3.e.2.3 p500_ccc_upd()       --Update ccc_file
  3.e.3  p500_wipx0()    ---记录WIP-拆件式工单 在制成本 (工单性质=11) --因为要取重工后单价
    3.e.3.1 p500_wipx()---处理 WIP 在制成本 (工单性质=11拆件工单)                  
 3.f .  p500_reshare()--对于 联产品入库分摊 部份, 进行第二次处理
3.f.1  p500_ccg4_cost()    -- 计算联产品入库分摊
  3.f.2  p500_ccc_tot('3')    --计算所有出库成本及结存
  3.f.3  p500_ccc_upd()      -- Update ccc_file
 3.g .  p500_reshare2()---对于 拆件式入库分摊 部份, 进行处理
3.g.1  p500_ccg5_cost()   --计算拆件式入库分摊
  3.g.2  p500_ccc_tot('3')  -- 计算所有出库成本及结存
  3.g.3  p500_ckp_ccc()   --CHECK ccc_fileNOT NULL栏位的判断
  3.g.4  p500_ccc_upd()     -- Update ccc_file
 3.h .  p500_cct2ccg()--cct_file,ccu_file写入ccg_file,cch_file
   p500_out()----显示成本计算错误讯息(ccy_file)
 4.1   p500_rep()---显示成本计算错误讯息(ccy_file)

作者:罗向锋

2018/04/10

初探Oracle的审计功能

早上有Tiptop的User反馈,凭证抛转还原时,提示表被锁,于是打开p_zta准备解锁,但输了几次Oracle的system和sys密码,都提示不正确。还以为是上月发生信息安全事件后,新改的管理员密码被我记错了,再跟Keepass核对,发现密码没问题。

于是用相同的密码从sqlplus尝试,提示:“ORA-28000: the account is locked”,居然是system帐户被锁定了。查资料发现:
可能是由于错误的密码输入次数超出了profile中failed_login_attempts 次数的限制而被锁定。
 通过如下SQL语句可以查看用户状态和被锁定时间:
SELECT username,account_status,lock_date FROM dba_users;
那就先解锁再说吧,语句如下:
alter user system account unlock; 
 处理完User的问题继续来追查system帐号被锁的原因。首先以sys的身份看Oracle是否已开启审计功能,过程及结果如下:

show parameter audit;

上图中,audit trial的值为DB,说明审计功能已开启,audit_file_dest的value是审计文件存储的位置。遂以OS的oracle用户身份查看审计文件,可令人失望的是,这里只记录了sys用户登录的审计结果,但我的问题是system用户因连续10次输入密码错误被锁定了。值得提一下的是,在这个审计文件中,STATUS的值为0表示正常登录,1017为登录失败。

又查了资料,原来普通的帐户登录,没有相应的os审计文件,但是被添加到了表SYS.AUD$,这下终于揪出原因了(是某个没有数据库管理员权限的同事在反复试system的密码)。我用的相关SQL语句如下:
SELECT userid, userhost, terminal, clientid,ntimestamp#,comment$text
FROM aud$
WHERE returncode=1017 AND userid='SYSTEM'
ORDER BY 5;
参考资料: 乐沙弥的世界

2018/03/09

记Tiptop ERP服务器被植入恶意程序

昨天早上,有User反映Tiptop ERP程序运行缓慢,接连又有反馈说无法登录。具体提示为:
GDC端:DVM connection timed out.
Web端:Application DUA not found 
第一反映是去Terminal执行top命令,看系统的健康状况。数据把我吓一跳,用户空间占用CPU已达75%多,而其中有一个以root身份运行的名为xxm进程,CPU时间占用百分比为1199.3。这个进程也没见过啊,第一时间联系客服人员,被告知要请系统工程师(SE)确认,几乎马上被告知,被植入了恶意程序,如果要处理,需要另付4小时的工时费。没办法,那就赶紧吧,系统不能停摆啊……

与此同时,我自己也在摸索找到恶意程序。先用kill把进程杀掉,再用find -name去找xxm这个文件的位置(后来才知道在top界面按c就能看到),然后把它删除,没一会儿CPU负载又升起来了,xxm又来了,立即去看ctontab,果然是每30分钟从某个位置复制产生该文件,并运行。如此总算可以完全清除了。快4小时的时候,SE也告之说完全处理OK了,时间拿捏的真好。

而ERP不能登录,是因为负责分发License的程序flm运行不起来,在此期间TOPTEST也不能登录,是因为使用同一个License服务程序。其实上面的恶意进程清除后,重启服务器或运行flmprg –r就好了。后悔花了4小时的工时费。

后来,又参考了网上诸多资料,加上个人的一点经验,终于把幕后黑手的行踪找出来了,大年初一那天,幕后黑手通过VPN登入公司ERP主机,用的是root帐号,同时还用mstsc登入了CR服务器,这里留下了他的电脑名称,只可惜负责网络的同事没能找到VPN登录的日志,一条重要线索丢失。

结论:熟人作案,而且手段并不高明,留下很多痕迹。

教训:

  1. VPN不能常开,而且要保留足够长时间的日志;
  2. OS和Oracle的密码都不能直接告诉服务厂商,远程协助要有人值守。

2017/11/02

[转] 设置sql server 2008编码格式-排序规则

具体操作如下: 

1、以windows身份验证,登录数据库; 
2、输入命令: 
use master 
go 
alter   database   [你数据库的名字]   collate   Chinese_PRC_CI_AS 

执行可能会报“无法用排他锁锁定该数据库”错误,别急,第3步来了 


3、停止SQLSERVER2008服务; 
4、再执行第1,2步 

到这里就可以了 



参考自http://getwaysun.iteye.com/blog/2191446