İki ilginç makale;
Herşeyi Öğrenmek! ve Holistik Öğrenme ile Çalışmadan Sınavlarda Başarılı Olma
12 Kasım 2016 Cumartesi
9 Eylül 2015 Çarşamba
Ağ Cihazları Konfigürasyon Kontrol Listesi Excel Uygulaması
Merhaba.
Bir çok ağ cihazınız var ve bunların konfigürasyonlarının belirli bir temel konfigürasyonda olup olmadığını kontrol etmek istiyorsunuz. Bunun için export edilmiş konfigürasyon dosyaları üzerinden sizin belirlediğiniz temel komutların olup olmadığını kontrol edip raporlayan bir excel uygulaması paylaşılmıştır.
Buradaki örnekte kullanılan konfigürasyon dosyaları hp ağ cihazları içindir. Ancak kullanılan konfigürasyon kontrol listesi mantığı cihazdan bağımsızdır. Hatta modifiye ederek veya etmeyerek farklı alanlar içinde kullanılabilir.
- Farklı tarihlerde export edilmiş konfigürasyonlardan sadece tarihi en son olanı dikakte alır.
- checks.txt dosyasında, her bir satırda bir komut olacak şekilde, konfigürasyonlarda olması istenen komut ifadelerinin bir kısmı yazılır ve uygulama export edilmiş konfigürasyon dosyalarından en son tarihli olanında bu ifadelerin varlığına bakarak bunları excel arayüzünde renkli olarak gösterir.
-checks.txt dosyasındaki komutları üst sütuna sıra ile yazar, konfigürasyonu olan cihazların hostname bilgilerini, ip adreslerini ilk sütunlarda her bir satıra bir cihaz gelecek şekilde yerleştirir.
eğer chesks.txt dosyasındaki komut cihazın konfigürasyonunda yoksa cihaz-komut kesişim hücresine kırmızı arkaplan ve ! işareti koyar. komut varsa yeşil arka plan ve "OK" yazar.
Tüm komutlar tüm cihaz konfigürasyonlarında aranıp işlem bitince tüm eksik olan komutların kolay görüntülenmesi için ayrı bir sayfada bunları listeler.
Excel Uygulama ve Örnek Konfig Exportlar
Bir çok ağ cihazınız var ve bunların konfigürasyonlarının belirli bir temel konfigürasyonda olup olmadığını kontrol etmek istiyorsunuz. Bunun için export edilmiş konfigürasyon dosyaları üzerinden sizin belirlediğiniz temel komutların olup olmadığını kontrol edip raporlayan bir excel uygulaması paylaşılmıştır.
Buradaki örnekte kullanılan konfigürasyon dosyaları hp ağ cihazları içindir. Ancak kullanılan konfigürasyon kontrol listesi mantığı cihazdan bağımsızdır. Hatta modifiye ederek veya etmeyerek farklı alanlar içinde kullanılabilir.
- Farklı tarihlerde export edilmiş konfigürasyonlardan sadece tarihi en son olanı dikakte alır.
- checks.txt dosyasında, her bir satırda bir komut olacak şekilde, konfigürasyonlarda olması istenen komut ifadelerinin bir kısmı yazılır ve uygulama export edilmiş konfigürasyon dosyalarından en son tarihli olanında bu ifadelerin varlığına bakarak bunları excel arayüzünde renkli olarak gösterir.
-checks.txt dosyasındaki komutları üst sütuna sıra ile yazar, konfigürasyonu olan cihazların hostname bilgilerini, ip adreslerini ilk sütunlarda her bir satıra bir cihaz gelecek şekilde yerleştirir.
eğer chesks.txt dosyasındaki komut cihazın konfigürasyonunda yoksa cihaz-komut kesişim hücresine kırmızı arkaplan ve ! işareti koyar. komut varsa yeşil arka plan ve "OK" yazar.
Tüm komutlar tüm cihaz konfigürasyonlarında aranıp işlem bitince tüm eksik olan komutların kolay görüntülenmesi için ayrı bir sayfada bunları listeler.
Excel Uygulama ve Örnek Konfig Exportlar
16 Haziran 2015 Salı
Vbscript ile dizinler içinde dosya varlık kontolü- örnek arşivleme klasörlerinde eksik olan günü bulma
Bir arşivleme programı veritabanından hergün o güne ait verileri yilaygün.arsiv.zip isimlendirme formatında \yıl\ay\ formatında klasör yapısında diske yazmaktadır.
Ancak yıllar içinde bazı günler çalışmamış ise eksik arşivler bulunabilir.
Bu kadar klasör içinde hangi günün arşivi eksik bulmak için bir vbscript paylaşılacaktır.
dosyalar D:\Arsivleme\ klasöründe her yıla ait bir klasör ve her yıl klasöründe her aya ait bir klasör ve her ay klasöründe hergüne ait yilaygün.Arsiv.zip formatında o günün arşivi depolanmaktadır.
Örnek olarak;
16 haziran 2015 gününün arşivi
D:\Arsivleme\2015\6\20150616.Arsiv.zip
şeklinde saklanmaktadır.
Mevcut durumda 21.12.2012 gününe ait arşiv de başlanarak bugünün tarihine kadar kontrol yapılacaktır. başlama ve bitiş script içinden ayarlanabilir.
dim yil
dim ay
dim gun
dim s_ay
dim s_gun
dim Afile
Set oShell = CreateObject("WScript.Shell")
Set ofso = CreateObject("Scripting.FileSystemObject")
fld = oFSO.GetParentFolderName(Wscript.ScriptFullName)
Set objFile = oFSO.CreateTextFile(fld & "\log.txt")
set objFile = nothing
set objFolder = nothing
' OpenTextFile Method needs a Const value
' ForAppending = 8 ForReading = 1, ForWriting = 2
Const ForAppending = 8
Const ForWriting=2
Set objTextFile = oFSO.OpenTextFile (fld & "\log.txt", ForWriting,True)
' aramanın başlayacağı tarih: klasör
yil=2012
ay=12
gun=21
do while 1=1
'20121221.Events
if ay<10 then
s_ay="0" & ay
else
s_ay=ay
end if
if gun<10 then
s_gun="0" & gun
else
s_gun=gun
end if
'' 20150601.Arsiv.zip
Afile= yil & s_ay & s_gun & ".Arsiv.zip"
pth="D:\Arsivleme\" & yil & "\" & ay & "\" & Afile
If Not oFSO.FileExists(pth) Then
objTextFile.WriteLine(AFile)
End if
gun=gun+1
dt=ay & "/" & gun & "/" & yil
if not isdate(dt) then
gun=1
ay=ay+1
if ay>12 then
ay=1
yil=yil+1
end if
end if
dt=ay & "/" & gun & "/" & yil
' debug için
' if yil=2015 and ay=4 then
' msgbox day(dt) & " " & month(dt) & " " & year(dt)
' end if
' aramanın biteceği gün : bugün istenirse burada farklı bir gün ay yıl verilebilir..
if (day(dt)=day(now) and month(dt)=month(now) and year(dt)=year(now)) then
msgbox "Kontrol bitti. Log.txt dosyasina bakiniz."
exit do
end if
loop
objTextFile.Close
set objFile = nothing
set objFolder = nothing
set oFSO=nothing
Etiketler:
dosya var mı,
filesystem,
script,
vbscript
T-SQL string dizisi olarak gönderilen değerleri prosedür ile işleme örneği
Merhaba,
T-SQL'de yeni 2012 öncesi versiyonlarda dizi değişkeni olmadığı için pratik olarak dizi değişkenlerini işleyip verileri tablolara işleme işlemi mümkün değildi. (2012,2014'de var mı bilmiyorum)
Bu konuda 2009 yıllarında yazdığım ve ancak buraya not etmek fırsatı bulduğum bir T-sql ile dizi işleme örneği göstereceğim. Örnek uygulamamız anket tablosu olacak. Ancak uygulamanın sadece T-SQL tarafı gelen string diziyi anket tablosuna yazan kısmını buraya yazacağım, .net vb uygulama tarafında bu diziler nasıl oluşturulur kısmına burada değinmeyeceğim.
uygulama tabloları : tblANKET her bir anket değerlendiricisi için bir kayıt tutan ve anketin idsini içeren tablo.
tblANKET_DETAY : her bir anket kullanıcısının sorulara verdiği 5li seçenekleri tutan tablo.
Soruların olduğu tablo konumuz dışında olduğu için burada önemli değil.
aşağıda vereceğim spAnketKaydet prosedürüne 3 adet parametre gönderilecek.
1.parametre anketin o sıradaki kullanıcıya aid olan idsi.
2. parametre soruların idlerinin virgülle ayrılmış string dizisi.
3. parametre sorulara verilen cevap seçeneklerinin (1-5 arası) virgülle ayrılmış string dizisi.
bu değerler uygulama tarafından oluşturulup bu sp ye gönderilirse, bu prosedür tüm seçenekleri ilgili sorulara kaydedecektir.
Prosedür:
CREATE proc [dbo].[spAnketKaydet](@pid int,@soruidler varchar(200),@secenekler varchar(200))
as
begin
/*
örnek kullanım :
exec spAnketKaydet 17747, '2,3,4,5','3,3,4,5'
tlbANKET tablosundaki 17747 idli anket için;
2idli soruya 3üncü seçenek
3idli soruya 3üncü seçenek
4idli soruya 4üncü seçenek
5idli soruya 5inci seçenek
*/
declare @s varchar(5)
select @s=AnketUserID from tblAnket where ID=@pid
declare @soruid int
declare @secenek int
declare @Vk int
declare @Pk int
declare @Vs int
declare @Ps int
set @Pk=1
set @Ps=1
declare @cik int
set @cik=0
SET XACT_ABORT OFF --ya hep ya hiç
BEGIN TRY
BEGIN TRAN
while(@cik=0)
begin
-- soruidler dizisinde virgül pozisyonu
set @Vk= charindex(',',@soruidler,@Pk)
if @Vk=0 --dizinin son elemanına gelinince...
begin
--select @Pk-1,len(@soruidler) as fff
set @soruid=Convert(int,substring(@soruidler,@Pk,(len(@soruidler)-@Pk+1)))
set @cik=1
end
else
begin -- pk'dan virgül pozisyonuna kadar olan kısmı (dizi elemanı) al sorna pkyi bunun boyu kadar artır..
set @soruid=Convert(int,substring(@soruidler,@Pk,@Vk-@Pk))
end
set @Pk=@Vk+1
--yukardakin aynı mantıkla secenekler dizisinini de tek tek okuyoruz..
set @Vs= charindex(',',@secenekler,@Ps)
if @Vs=0
begin
set @secenek=Convert(int,substring(@secenekler,@Ps,(len(@secenekler)-@Ps+1)))
end
else
begin
set @secenek=Convert(int,substring(@secenekler,@Ps,@Vs-@Ps))
end
set @Ps=@Vs+1
--select @soruid,@secenek
if @secenek>0
begin
if exists(select * from tblANKET_DETAY where SORUID=@soruid and ANKETID=@pid) --anketin ilgili sorusuna ait seçenek zaten kayıtlı ise güncelle..
begin
update tblANKET_DETAY
set SECENEK=@secenek
where ANKETID=@pid and SORUID=@soruid
end
else
begin --değilse yeni ekle..
insert into tblANKET_DETAY
(ANKETID,SORUID,SECENEK)
values(@pid,@soruid,@secenek)
end
UPDATE tblANKET set KAYITTARIHI=getdate() where ID=@pid
end
end --while
COMMIT
select 'tamam' as durum
END TRY
BEGIN CATCH
ROLLBACK
select 'hata' as durum
declare @msj varchar(MAX)
set @msj='HATA OLUŞTU : ' + ERROR_MESSAGE()
select @msj as 'hatamesajı'
END CATCH
END
T-SQL'de yeni 2012 öncesi versiyonlarda dizi değişkeni olmadığı için pratik olarak dizi değişkenlerini işleyip verileri tablolara işleme işlemi mümkün değildi. (2012,2014'de var mı bilmiyorum)
Bu konuda 2009 yıllarında yazdığım ve ancak buraya not etmek fırsatı bulduğum bir T-sql ile dizi işleme örneği göstereceğim. Örnek uygulamamız anket tablosu olacak. Ancak uygulamanın sadece T-SQL tarafı gelen string diziyi anket tablosuna yazan kısmını buraya yazacağım, .net vb uygulama tarafında bu diziler nasıl oluşturulur kısmına burada değinmeyeceğim.
uygulama tabloları : tblANKET her bir anket değerlendiricisi için bir kayıt tutan ve anketin idsini içeren tablo.
tblANKET_DETAY : her bir anket kullanıcısının sorulara verdiği 5li seçenekleri tutan tablo.
Soruların olduğu tablo konumuz dışında olduğu için burada önemli değil.
aşağıda vereceğim spAnketKaydet prosedürüne 3 adet parametre gönderilecek.
1.parametre anketin o sıradaki kullanıcıya aid olan idsi.
2. parametre soruların idlerinin virgülle ayrılmış string dizisi.
3. parametre sorulara verilen cevap seçeneklerinin (1-5 arası) virgülle ayrılmış string dizisi.
bu değerler uygulama tarafından oluşturulup bu sp ye gönderilirse, bu prosedür tüm seçenekleri ilgili sorulara kaydedecektir.
Prosedür:
CREATE proc [dbo].[spAnketKaydet](@pid int,@soruidler varchar(200),@secenekler varchar(200))
as
begin
/*
örnek kullanım :
exec spAnketKaydet 17747, '2,3,4,5','3,3,4,5'
tlbANKET tablosundaki 17747 idli anket için;
2idli soruya 3üncü seçenek
3idli soruya 3üncü seçenek
4idli soruya 4üncü seçenek
5idli soruya 5inci seçenek
*/
declare @s varchar(5)
select @s=AnketUserID from tblAnket where ID=@pid
declare @soruid int
declare @secenek int
declare @Vk int
declare @Pk int
declare @Vs int
declare @Ps int
set @Pk=1
set @Ps=1
declare @cik int
set @cik=0
SET XACT_ABORT OFF --ya hep ya hiç
BEGIN TRY
BEGIN TRAN
while(@cik=0)
begin
-- soruidler dizisinde virgül pozisyonu
set @Vk= charindex(',',@soruidler,@Pk)
if @Vk=0 --dizinin son elemanına gelinince...
begin
--select @Pk-1,len(@soruidler) as fff
set @soruid=Convert(int,substring(@soruidler,@Pk,(len(@soruidler)-@Pk+1)))
set @cik=1
end
else
begin -- pk'dan virgül pozisyonuna kadar olan kısmı (dizi elemanı) al sorna pkyi bunun boyu kadar artır..
set @soruid=Convert(int,substring(@soruidler,@Pk,@Vk-@Pk))
end
set @Pk=@Vk+1
--yukardakin aynı mantıkla secenekler dizisinini de tek tek okuyoruz..
set @Vs= charindex(',',@secenekler,@Ps)
if @Vs=0
begin
set @secenek=Convert(int,substring(@secenekler,@Ps,(len(@secenekler)-@Ps+1)))
end
else
begin
set @secenek=Convert(int,substring(@secenekler,@Ps,@Vs-@Ps))
end
set @Ps=@Vs+1
--select @soruid,@secenek
if @secenek>0
begin
if exists(select * from tblANKET_DETAY where SORUID=@soruid and ANKETID=@pid) --anketin ilgili sorusuna ait seçenek zaten kayıtlı ise güncelle..
begin
update tblANKET_DETAY
set SECENEK=@secenek
where ANKETID=@pid and SORUID=@soruid
end
else
begin --değilse yeni ekle..
insert into tblANKET_DETAY
(ANKETID,SORUID,SECENEK)
values(@pid,@soruid,@secenek)
end
UPDATE tblANKET set KAYITTARIHI=getdate() where ID=@pid
end
end --while
COMMIT
select 'tamam' as durum
END TRY
BEGIN CATCH
ROLLBACK
select 'hata' as durum
declare @msj varchar(MAX)
set @msj='HATA OLUŞTU : ' + ERROR_MESSAGE()
select @msj as 'hatamesajı'
END CATCH
END
Kaydol:
Kayıtlar (Atom)