15 Ekim 2016 Cumartesi

ZİMBRA Mail Sistemi Veri Kurtarma-01

Zimbra Mail Server Üzerinden Veri Kurtarma Hakkında;

Zimbra Mail sistemi, bilenen diğer mail sistemlerinin aksine, parçalı bir yapıda mailleri saklamakta ve yönetilmesini sağlamaktadır. (Kendi adıma bu şekilde olmasını beğeniyorum.) Bu parçalı yapı, başlık bilgileri olarak kullanılan bilgiler MySql database i ve mailin kendisini bir dosya olarak kullanıcı için tanımlanan dizinin altında saklayan bir yapıdır. Hal böyle olunca felaket anlarında geri dönüşler görece daha rahat olabilmektedir.

Bir felaket anı kurgusu olarak, mail sisteminizin çoktüğü anda en yakın yedeğinizin 1 gün önce olduğunu varsayalım. Yedekten dönüş yaptığınızda, yedek alınan an ile sistemin çöktüğü an arasındaki maillerin posta kutusunda olmadığını göreceksiniz.

Böyle bir sorun kaşlısında, çöken sistemde, maillerin kaydedildiği yeri seçerek, yedek alınan tarihten sonra değişiklik olmuş tüm dosyaları aratıp, dışarıya kopyalayınız.

Sonrasında, çalışan mail sisteminize bir dizin açarak (ki hem root hem zimbra ulaşabilmelidir bu dizine) dosyaları buraya kopyalayın.

Kendi posta kutunuzda (Örnek x@y.com.tr olsun) Zimbra Mail ekranında, "Gelen Kutusu" altına bir dizin açın örnek olarak "YEDEK"

Artık yapmanız gereken tek şey, aldığınız dosyaların olduğu dizine komut satırı ile girmek ve

for i in * ; do zmmailbox -z -m x@y.com.tr addMessage /inbox/YEDEK $i ; done
 
 
Zimbra posta kutunuzda açtığınız "YEDEK" dizini altına bu maillerin geldiğini göreceksiniz.


Zimbrada dışarıdaki ham mail dosyalarını *.msg bir posta kutusunun içine import etmek içinde bu bu komut kullanılabilir.

zmmailbox -z -m x@y.com.tr /addMessage /inbox 012312312.msg 

11 Ekim 2016 Salı

Linux İşletim Sisteminde, Farklı bir VLAN a ulaşamamak 01;

Linux İşletim Sisteminde, Farklı bir VLAN a ulaşamamak;

Linux'un yeni dağıtımlarında güvenlik seviyesi bir kademe daha arttırıldığı için, Linux işletim sisteminin bağlı olduğu VLAN'dan farklı bir VLAN'a ulaşmada sıkıntı yaşanabilmektedir.

Bunun için IPTABLES ayarları yada Firewalld ayarlarının yapılmasının yanınıda daha basit bir yöntemden burada bahsedeceğim.

Örneğin, 192.168.0.x network üzerindesiniz ve 192.168.5.x networke (ağ geçitiniz ve diğer ayarlarınız doğru olmasına rağmen) ulaşamıyorsunuz (ping atamıyorsunuz). Yapmanız gereken, Linux işletim sistemini 192.168.5.x lie networke dahil edip bu networkteki bir IP'ye bir kere ping atmak, sonrasında o IP dende bir kere Linux işletim sistemine ping atmaktır. Bu işlem sonrasında, Linux işletim sisteminizi tekrar 192.168.0.x li VLAN a aldığınızda artık, 192.168.5.x li networke ulaşabildiğinizi göreceksiniz.

Selamlar.

MAKEL ELEKTRİK SAYACI VERİ OKUMA (RS 485)

MAKEL ELEKTRİK SAYACI VERİ OKUMA (RS 485)

Merhaba,

Yine gündelik hayatta pek kullanmadığımız ancak ihtiyacımız olduğunda bulunması zor olan bir konuyu yazmaya çalışacağım.

İşletmlerede maliyetin büyük bir kısmını enerji tüketimleri oluşturmaktadır. Bu durumda enerji tüketiminin en iyi şekilde takibi ve kayıt altına alınması bir yerden sonra zorunluluk halini almıştır. Burada MAKEL marka elektrik sayaçlarından, C# kodu üzerinden nasıl veri alındığına biraz değineceğim.

İlkin, kabaca RS485 seri port iletişiminden bahsetmekte fayda var. RS485 seri port iletişimi, bir hat üzerinden birden fazla nokta ile iletişimimizi sağlayan bir teknolojiye sahiptir. Genel prensip olarak, iki tel arasında gönderilen sinyaller, bağlı olan tüm cihazlara gider. Cihazlardan hangisi ile iletişim kurulacak ise o cihazın "numarası" gönderilen bilginin içinde olduğunda, ilgili cihaz kendisi ile iletişim kurulmak istendiğini anlar ve kendisinden istenen bilgileri gönderir, yada yapar.

Hemen hemen her bilgisayarda en az 1 adet seri port vardır. Olmasa bile RS485 seri port kartları bulunabiliyor. Ancak ben bu kartlar yerine RS485 to Ethernet çeviricileri tercih ediyorum. Bu sayede network alt yapınız üzerinden bu bilgileri toplama imkanınız oluyor. Bu çeviricilerin genel olarak bir IP adresi üzerinden ara yüzüne bağlanıyorsunu ve burada yaptığınız ayarlarla verdiğiniz IP üzerinden bilgisayarınıza kurduğunuz (çeviricinin programı ile) program ile sanal portlar yaratıp bu portlar üzerinden veri okuyabiliyorsunuz. Burada dikkat edilecek nokta, 7 Bit + 1 Stop Bit ve "EVENT" ayarlarının yapılması (RS485 ayar ekranına girdiğinizde bunları seçenekler içinde görebilirsiniz)

Artık COM portumuzda olduğuna göre, kod ile veri okumaya başlayabiliriz.

C# kodları ile okumak için

                        serialPort1.Close(); //Seripart objesini ne olur ne olmaz diye kapatıyoruz.
                        serialPort1.BaudRate = 300; //bound rate 300 yapıyoruz, ilk iletişim için zorunlu
                        serialPort1.PortName = "COM2"; //iletişim kurulacak port numarasını yazıyoruz.
                        serialPort1.Open(); //seri portu açıyoruz.

Buraya kadar, ilk letişim için 300 bpd ile bağlantı yapılıyor. Şimdi okuyacağımız sayacın olup olmadığına bakacağız.

      if (serialPort1.IsOpen) //Port açık ise işlemleri yap
                        {
                            Thread.Sleep(100); //biraz bekle
                            serialPort1.Write("/?MSY" + sayacSeriNo + "!"); //sayacSerino=okumak istediğiniz //sayacın üzerindeki seri numarasıdır. Bu işlemler bu bilgiyi RS485 üzerinden gönderiyoruz.
                            serialPort1.Write("\r\n"); // satır başı

                            Thread.Sleep(200); //az biraz bekle
                            int read = 0;
                            int shouldRead = readData1.Length;
                            int len;
                            while (read < shouldRead)
                            {
                                len = serialPort1.Read(buffer, 0, readData1.Length); //Eğer RS485 üzerinde cihazımız var ise burada bize seri numarasını göndermiş olmalı eğer bu satırı geçemiyorsak okuma yapamıyoruzdur.
                                if (len == 0)
                                    continue;
                                Array.Copy(buffer, 0, readData1, read, len);
                                read += len;
                                string Baslik = HexString2Ascii(BitConverter.ToString(readData1).Replace("-", string.Empty)); //okuduğumuuz bilyi bir string değişkene aldırk
                                //System.Threading.Thread.Sleep(250);
                            }

                            serialPort1.Write(char.ConvertFromUtf32(6) + "057"); //kontrol için gönderiliyor, bu bilgiyi gönderdiğimizde bize üzerindeki tüm bilgileri dökmeye hazır duruma gelmeli
                            serialPort1.Write("\r\n" + char.ConvertFromUtf32(6) + "057");
                            serialPort1.Write("\r\n");

                            serialPort1.Close(); //300 bps ile olan bağlantıyı kapatıyoruz.

                            serialPort1.BaudRate = 9600; //9600 bps e ayarlıyoruz.
                            serialPort1.Open(); // tekrar açıyoruz.

                            serialPort1.DtrEnable = true; //DTR özelliğini açıyoruz.

                            readData1 = new byte[6566]; // alınacak data boyutunu en yüksek seviyeye ayarlıyoruz.
                            buffer = new byte[6566];
                            int read2 = 0;
                            int shouldRead2 = readData1.Length;

                            int k = 1;
                            serialPort1.ReadTimeout = 10000; //Okuma için time out belirliyoruz.
                            for (int m = 0; m < k; m++)
                            {
                                //if (txtAyrinti.Text.Contains('!'))
                                //{
                                //    break;
                                //}                              

                                string[] d = Regex.Split(txtAyrinti.Text, "\r");
                                try
                                {
                                     string Bilgiler += serialPort1.ReadLine() + "\r\n"; //gelmiş olan bilgileri satır satır okuyoruz.
                                }
                                catch (Exception ex)
                                {
                                    break;
                                }
                                k = d.Length;
                               }


Bu yöntem ile MAKEL üzerindeki tüm bilgileri bir kerede çekerek gelen bilgileride IEC 62056-21 standartına göre değerlendirerek kullanabilirsiniz.

Kolay gelsin.

NOT: Kodlar yazılan bir örnekten alınmıştır, örnek çalışıyor ancak aktarırken hata yapılmış olabilir, çalışmayan yer olursa bir miktar uğraşmanız gerekebilir.


16 Ekim 2014 Perşembe

Windows 7 ve Windows 8 RDP sorunu ile ilgili

Merhaba, (16/10/2014)

Bugün yaşadığım sorunu ve çözümü ile

Nedendir birlmiyorum ancak Microsoft, işletim sistemlerinde RDP protokolü üzerinden bağlantının 1 kullanıcı ile kısıtlanmasını sağlayacak biçimde yeni update yapmıştır. Eğer işletim sistemi üzerinden RDP ile kullanıcıları çalıştırıyorsanız, bugün gelen update sonrasında sıkıntı yaşamaya başlayacaksınız.


Yapılması gereken,

- Denetim masasına girmek
- "Program/Ekle Kaldır" üzerinden, güncellemeleri görüntülemek
- Eğer Windos 7 kullanıcısı ise "KB2984972" bu güncellemeyi kaldırması
- Eğer Windows 8 kullanıcısı ise "KB2973501" bu güncellemeyi kaldırması
- Bilgisayarın kapatıp açılması

sonrasında RDP bağlantılarınız geri gelecektir.

Özellikle, masaüstü paylaştıran ve bunu işletim sistemi üzerinden yapan kişilerin buna dikkat etmesi gerekiyor.

İyi günler.


19 Aralık 2013 Perşembe

Catia Mercedes eklentisi (add on) Q-checker lisans yenileme

Merhaba,

Bildiğiniz üzere Catia üzerinde çalışan ve Mercedes firmasının cat datalar için istediği add on lisanslı satılan bir ürün olan Q-checker'dır. Burada Q-checker ın lisansının nasıl çalıştığında biraz bahsedeceğim.
Catia içerisinde bulunan ve bu add on ları yöneten kapı lisansı "VX1" lisansıdır. Bu lisansın çalışabilmesi için mutlaka "PX1" isimli lisansı almış olmanız gerekir.
Q-checker programı diğer Catia programları gibi "Nodelock" lisans ile belirli bir süre için verilmektedir. (En azından şimdilik). Bu süre dolduğunda, lisans aldığınız Trancat firmasından yeni lisans gelmeli. (ki genellikle zamanında gelmiyor sizlerin hatırlatması gerekiyor) Lisans genel olarak, bir mail ile gelmektedir. Bu mail içerisinde 2 satırlık bir bilgi vardır. (ki bu bilgi mailin içerisinde belirtilir.) Bu iki satırı, "LUM" kurduğunuz klasördeki "nodelock." dosyası içine yapıştırmanız gerekiyor. Bu işlemi yaptıktan sonra Q-checker programınız çalışmaya başlayacaktır.

NOT: Default kurulumda "nodelock." dosyası, c:\programdata\IBM\LUM içindedir.


9 Aralık 2013 Pazartesi

Bilgisayar Sistemi (Proje) Oluştururken Dikkat Edilecekler

Merhaba,

Bir firmanın IT bölümünde çalışıyorsanız ve IT alt yapınız artık firmanın ihtiyaçlarını karşılamıyor ise zorunlu olarak alt yapınızı yükseltmek ve hatta sonraki yılları kapsayacak biçimde niteliksel değişiklikler yapmanız gerekecektir. Burada neler almanız gerektiğinden bahsetmeyeceğim, daha genel olan, bu yapıyı nasıl kurmanız gerektiğinden bahsetmeye çalışacağım.

İlkin nelere ihtiyacınız olduğunu net olarak belirlemeniz gerekiyor. IT için yapılacak donanım ihtiyaçları genelde, yeni programların devreye alınması yada bu geçişlerde gerçekleşmektedir. Eğer yeni bir programı koşturmak için donanım alt yapısı çıkartmanız gerekiyor ise mutlaka bu programın desteğini veren firma/firmalar ile görüşüp, program kullanımına göre ne kadar kaynak ihtiyacınız olduğunu çıkartınız. Mümkün ise bu dokümanları saklayınız. Çünkü sıklıkla yaşanan sorun, programın yaşadığı dar boğazın donanım eksikliğinden kaynaklandığının ileri sürülmesidir. Ne yazıktır ki, yazılım desteği veren firmalar, desteğini verdikleri yazılımın alt yapıda nasıl işlediği ile ilgili net bilgilere sahip olmaması, bir sorun olduğunda bu sorunun donanım kaynaklı olduğunu ileri sürmelerine neden oluyor. Bu nedenle, yazılım firmalarından istedikleri kaynakların ne olduğunu öğrenip buna göre yapınızı kurmanızda fayda vardır.

Donanım projelerinin oluşturulmasında önemli iki ana etken vardır. Bunlar, server ve storage tir. Donanım markalarına bakıldığında, server kısmında bir standartın oturduğu söylenebilir. Sonuçta, hangi marka olursa olsun, aldığınız server donanımı, bir birine çok yakın olacaktır. Ancak, iş storage kısmında değişir. Özellikle orta ve üst segment storagelerde bir standart bulunması hayli güçtür. Bu markalar arasında rekabeti oluşturmanın yanında belirli pazarlara hitap etmelerinden kaynaklanıyor. Bu noktada, IT projesinin sorumlusu olarak iş size düşmektedir. Neleri istediğinize ve bunu nasıl istediğinizi net bir biçimde çıkartmanız gerekecektir.

İsteklerinizi her marka bir biçimde karşılayacak olması bir yana, markaların satışa sundukları storageleri hangi amaç için dizayn ettiğini anlamanızda fayda var. Örneğin, HP'nin 3PAR modeli, büyük verilerin daha hızlı ve güvenli olarak işlenmesini referans almıştır. Ancak bu büyük verileri (ki büyük veriden kasıt 50 TB ve üstüdür.) sizin ihtiyacınız olup olmadığını karar vermeniz önemlidir. Geleneksel olarak, bugün alayım önümüzdeki 10 yıl boyunca yatırım yapmayayım bakışı olabilir, olmamalıdır. Teknolojik gelişmeye baktığımızda, özellikle yazılımın gelişim ivmesi daha fazla olduğu için, donanımlarını 3 ile 5 yıl sonrasında var olan teknolojiyi desteklemeyen bir noktaya gelmektedir. Bu nedenle,  3 yıl sonrasında yeni donanımlar almak ve eğer mümkün ise var olan yapının üzerine ekleyebileceğiniz, yada var olan yapıyı eski donanımların altında konumlandırabileceğiniz biçimde yapılacak tercihler sizi daha rahatlatacaktır.

Donanım alt yapınızı oluştururken, iş sürekliliği yada yedekleme planlarını da hesaba katmalısınız. İşin sürekliliği ve en kötü senaryoda, işin ne kadar durabileceğine ilişkin öngörüler oluşturup bu öngörülere donanım yatırımınızı ve projeyi şekillendirmeniz gerekmektedir.

Teşekkürler.

Not: Burada özellikle bir proje ve bir örnek yapı ele alınmamıştır. Size özel oluşturmayı planladığınız projeleri paylaşırsanız, elimden geldiğince yardımcı olurum.

8 Aralık 2013 Pazar

E-dock 602 SQL v8.1 'de verileriniz kaldığında nasıl dışarı çıkarılır.

Merhaba,

Geçen hafta, e-dock 602 SQL v8.1 programı ile boğuştum. Bu program, software602.com firmasının geliştirdiği (artık desteği olmayan), dokümanları WEB ortamında paylaşılabilen, (ufakta olsa) yetkilendirmesi olan, ufak çaplı firmalarda doküman yönetimini kabaca yapabilecekleri bir program.  İlk bakışta anlamlı gibi gelen bu programın, aktif desteği olmadığı için uzak durulmasını öneririm. (software602 firması eski olan bu programın desteğini vermeye çalışmıştır ve bu konuda kendilerine müteşekkirim. Ancak, programın eski olması nedeni ile destek elemanları istemelerine rağmen yardımcı olamadılar.)

Benim gibi var olan bir yapının içine düştüyseniz ve bu program aktif olarak kullanılıyor ise önerilerim; Desteği verilmediği için bu yapıyı, destek alacağınız bir başka doküman yönetimi sistemine devretmeyi eğer bu imkanınız yok ise dahi kaba yetkilendirme ile dosyaları "File Server" a taşıyınız. Bu işlem tamamlandıktan sonra E-dock servisini durdurunuz. Bu hamle, sizi sonraki adımlarda daha rahat hareket etmenizi sağlayacaktır.

Ola ki, bu biçimde önleminizi almadınız. Kesinlikle yapmayacağınız şeyler
- Makinenin imajını alıp farklı bir makine üzerinde çalıştırmak
- Fiziksel makinede ise sanal ortama taşımak
- Makinenin disk, ethernet kartını değiştirmek

Eğer bu işlemleri yaparsanız, E-Dock üzerindeki server hizmeti kendini kapatıyor. Üzerinde çalışan lisans bu parametrelere baktığı için, girdiğiniz lisanslarda servis (eskiden) tanımlı olan server'ı bulamıyor ve lisansları kabul etmiyor. E-Dock yayın yaptığı siteye girmek istediğinizde, geçici kullanım süresinin dolduğunu belirtiyor ve kullanıcı adı ve şifre bölümünün kapalı olduğunu görüyorsunuz ve sisteme giriş yapamıyorsunuz.

E-Dock yapı olarak tüm dosyaları kendi database'inde tutuyor ve bunları şifreli olarak tuttuğu için dosyalara ulaşma şansınız yok.

Hiç bir dosyaya ulaşamadığınız bu durumda, benim tecrübe ile bulduğum çözüm (ki her zaman işe yaramayabilir) makinenin tarihini geri almak oldu. Ben kendi adıma 2001 yılına geri aldıktan sonra E-dock yayın yaptığı siteye ulaşabildim. Sonrasında bilgilerimi dışarı alabildim. Bu işlem sonrasında E-dock servisini durdurdum.