批量修改所有伺服器的dbmail配置

2021-09-07 14:32:03 字數 2635 閱讀 3407

最近遇到這樣乙個案例,需要修改所有sql server的database mail的smtp,原來的smtp為10.***.***.***, 現在需要修改為192.168.***.***, 另外需要規範郵件位址,以前這類郵件[email protected]的字尾

需要修改為servername@***x.com(資訊做了脫敏處理)。

如果使用ssms客戶端的ui介面去修改的話, 那麼多伺服器一台一台去修改,不僅費時費力,而且枯燥無聊。只能使用指令碼,一旦寫好乙個指令碼,而後使用multiple server query execution(極力推薦使用這個管理、維護資料庫),執行一次指令碼,全部搞定。剩下的時間你可以喝喝茶、學習下新知識!

declare @smtpserver sysname;
declare @emailaddress nvarchar(120);
declare @emailsuffix nvarchar(32);
declare @neweamiladdress nvarchar(120);
--declare @actualemailsuffix nvarchar(32)='***x.com';  sql server 2005不支援此功能,會報cannot assign a default

value

to a local

variable.

declare @actualemailsuffix nvarchar(32);
declare @actualsmtpserver sysname;
set @actualemailsuffix='***.com';
set @actualsmtpserver='192.168.***.***';
declare emailaccount_cursor cursor fast_forward
for
select sa.[name]
,ss.[servername]
,sa.email_address
from [msdb].[dbo].[sysmail_server] ss
inner

join [msdb].[dbo].[sysmail_account] sa

on ss.[account_id]=sa.[account_id];
open emailaccount_cursor;
fetch

next

from emailaccount_cursor into @emailaccount, @smtpserver,@emailaddress;

while @@fetch_status = 0
begin
if ltrim(rtrim(@smtpserver))!=@actualsmtpserver
begin
execute msdb.dbo.sysmail_update_account_sp
@account_name = @emailaccount
,@mailserver_name=@actualsmtpserver;
print @smtpserver;
print @emailaccount;
end;
set @emailsuffix=substring(@emailaddress,charindex('@',@emailaddress)+1, len(@emailaddress) -charindex('@',@emailaddress))
if @emailsuffix!=@actualemailsuffix
begin
set @neweamiladdress= replace(@emailaddress,@emailsuffix,@actualemailsuffix);
execute msdb.dbo.sysmail_update_account_sp
@account_name = @emailaccount
,@email_address=@neweamiladdress
,@mailserver_name=@smtpserver;
print @emailaccount;
print @neweamiladdress;
end;
fetch

next

from emailaccount_cursor into @emailaccount, @smtpserver,@emailaddress;

end
close emailaccount_cursor;
deallocate emailaccount_cursor;

ansible批量修改伺服器密碼

看了一下網上 大多數是ansible playbook實現的,需要寫乙個指令碼,或者手動傳遞變數進去。以前用python tcp模組寫過客戶端主動上報修改密碼指令碼 今天寫乙個ansible主控客戶端修改密碼 shell版本 bin bash 展示所有定義的主機 allhost egrep v et...

定期批量修改遠端伺服器root密碼

一 背景 很多時候運維或安全工作人員需要維護大量的伺服器,其中就包括判斷是否存在root弱口令,如果伺服器數量很多一一修改的話的確是要好花費不少時間精力的。如果通過指令碼來實現密碼更改,再做乙個定期任務的話,會節省很多人力。二 設計思路 1.配置伺服器使用公鑰登入 2.編寫遠端密碼更改指令碼 3.配...

修改伺服器時區

方法一 tzselect 方法二 時區的配置檔案是 etc sysconfig clock 用tzselect 命令就可以修改這個配置檔案,根據命令的提示進行修改就好了。但是在實際工作中,發現這種方式是不能夠使得伺服器上的時間設定馬上生效的,而且使用 ntpdate 去同步時間伺服器也不能夠更改時間...