2024/11/18

用批处理命令自动给VirtualBox虚拟机建/删快照

 给虚拟机建快照比较简单,如果每天建一个快照,那就取当天日期为变量再调用VBoxManage命令就好了。

%programfiles%\Oracle\VirtualBox\VBoxManage.exe snapshot "你的虚拟机名称" take Backup%date:~,4%%date:~5,2%%date:~8,2%

为了节省服务器空间,我的快照保留最近7天的,搭配PowerShell取7天前的日期并转换为字符串,同样调用VBoxManage命令进行快照删除。

for /f %%i in ('powershell "(Get-Date).AddDays(-7).ToString('yyyyMMdd')"') do ("%programfiles%\Oracle\VirtualBox\VBoxManage.exe" snapshot "你的虚拟机名称" delete Backup%%i)

如果要定时处理,那就把上述命令放到bat文件中,再加入Windows任务计划即可。 

2024/07/26

重置ThinkSystem的UEFI密码

 一台Lenovo ThinkSystem SR630的服务器需要重装系统,但因为没有UEFI Admin的密码,而无法切换引导工具。


根据官网的解答文章(https://support.lenovo.com/us/en/solutions/ht509852-how-to-set-or-change-the-uefi-admin-password-using-lenovo-xclarity-essentials-windows-onecli)安装OneCli,并执行如下指令,即可修改密码。

onecli config set IMM.UefiAdminPassword "Abcd1234"

其中Abcd1234就是新密码。 

2024/01/25

SQL Server审计功能使用示例


目的:监控普通用户对数据库的非SELECT操作

操作步骤:

--1. 创建审计,来监控对数据库的所有操作

--GUI操作方法:在数据库实例下--安全性--审计--新建审核

USE [master]

GO

CREATE SERVER AUDIT [AuditLog]

TO FILE 

( FILEPATH = N'E:\SQLAuditLog'

,MAXSIZE = 1 GB

,MAX_ROLLOVER_FILES = 2147483647

,RESERVE_DISK_SPACE = OFF

) WITH (QUEUE_DELAY = 1000, ON_FAILURE = CONTINUE)

GO

--完成后在GUI界面右键,启用审核。


--2. 对应数据库下创建审核规范

--GUI操作方法:对应数据库-安全性-数据库审核规范--右键新建数据库审核规范

USE [TESTDB]

GO

CREATE DATABASE AUDIT SPECIFICATION [DatabaseAuditSpecification-20240124-143021]

FOR SERVER AUDIT [AuditLog]

ADD (INSERT, UPDATE, DELETE ON DATABASE::[TESTDB] BY [it]),

ADD (INSERT, UPDATE, DELETE ON DATABASE::[TESTDB] BY [max])

GO


--3. 查询审核日志

--GUI方法:数据库实例-安全性-审核-右键此前创建的审核-查看审核日志

SELECT event_time,action_id,succeeded,session_id,session_server_principal_name,object_name,statement,file_name,audit_file_offset

FROM sys.fn_get_audit_file('E:\AduitLog\Audit-20240119-091132_3B8B4864-F6A0-48A9-9964-58FA24A6E096_0_133501004286830000.sqlaudit',DEFAULT,DEFAULT) 

ORDER BY 1 DESC; 

代码说明:斜体字可根据实际情况调整

未解决问题:日志中存在sa的相关操作记录,导致日志文件很大。

2023/08/20

Holy crap!是什么意思?

 "holy crap"是一种略显粗俗的感叹词,表示惊讶。

从语言学角度看,这里有几件事。"crap"是 "shit"的一个不太粗俗的替代词。也就是字面上的粪便或排便行为。

至于"holy"的部分,那是早期宗教时代遗留下来的。几个世纪前,基督教在英语社会的日常生活中更为突出。亵渎神明或"亵渎主的圣名"可能会引起冒犯--这也是发誓的意义之一。因此,不礼貌的感叹词会使用宗教术语:"Holy Christ!" "Holy Mother of God"。今天的社会更加世俗化,宗教色彩越来越淡。所以,说 "Damn"是一种温和的蔑称,不会引起人们的注意。今天令人反感的不是滥用宗教术语,而是粗俗。因此,在 "holy shit"这样的结构中,英语保留了形式(以 "holy"开头),但用粗俗的词语取代了另一个宗教词语。因此,"holy crap"将被视为"minced oath"。也就是说,它用一个温和的形容词代替了强烈的形容词,就像用 "gosh darn"代替了"God damn"。

2023/08/11

用批处理文件监控程序运行状况,不运行时自动发邮件通知。

我有个长驻内存的程序,有时候会自动停止运行,本来想用批处理监控它并自动启动的,但一直失败,只能手动双击exe文件启动,所以迫不得已只能监测到停止时自动发邮件了。

好了,宝子们,上代码!😄

检测程序运行状况的批处理文件xxx.bat的内容:

tasklist | find /i "autotask.exe" && echo "It is running"  || "D:\sendmail.bat"

发送邮件的批处理文件sendmail.bat的内容:

echo set sh=WScript.CreateObject("WScript.Shell") >tmp.vbs
rem 停顿0.3s
echo WScript.Sleep 300 >>tmp.vbs
rem 下面的服务器地址替换成自己的,端口我只测了25
echo sh.SendKeys "open mail.domain.com 25{ENTER}" >>tmp.vbs
echo WScript.Sleep 1000 >>tmp.vbs
echo sh.SendKeys "helo abc{ENTER}" >>tmp.vbs
echo WScript.Sleep 300 >>tmp.vbs
rem 应该还要认证的,但我的服务器做了免认证,所以略过了。请自行Google吧。
rem 发件人
echo sh.SendKeys "mail from:<sender@domain.com>{ENTER}" >>tmp.vbs
echo WScript.Sleep 300 >>tmp.vbs
rem 收件人
echo sh.SendKeys "rcpt to:<yourname@domain.com>{ENTER}" >>tmp.vbs
echo WScript.Sleep 300 >>tmp.vbs
echo sh.SendKeys "data{ENTER}" >>tmp.vbs
rem 邮件头中的发件人和收件人
echo sh.SendKeys "from:sender@domain.com{ENTER}" >>tmp.vbs
echo sh.SendKeys "to:yourname@domain.com{ENTER}" >>tmp.vbs
cho WScript.Sleep 300 >>tmp.vbs
rem 邮件主题
echo sh.SendKeys "subject:AutoTask is not running{ENTER}{ENTER}" >>tmp.vbs
echo WScript.Sleep 300 >>tmp.vbs
rem 邮件内容,可多行。
echo sh.SendKeys "Here is the first line of your message body.{ENTER}" >>tmp.vbs
echo sh.SendKeys "Here is the second line of your message body.{ENTER}" >>tmp.vbs
rem 用一个点(.)结束邮件
echo sh.SendKeys ".{ENTER}" >>tmp.vbs
start telnet
rem 执行vbs文件,发送邮件。
cscript //nologo tmp.vbs
rem 清空vbs文件
echo sh.SendKeys "{ENTER}" >tmp.vbs

2023/08/02

将.exe文件注册为windows服务时的"坑"

为了让.exe命令能像服务一样在未登录Windows时自动启动,我们可以将符合服务规范的.exe文件注册为windows服务,使用的命令是sc,具体使用方法在网上有很多,就不赘述了。但sc命令中的坑需要记录一下:=(等号)前面不能有空格,而=(等号)后面必须有一个空格,切记!

另外,要以管理员的身份打开命令行。