En iyi yanıtlayıcılar
Günlük Ve Saat Başı Çalışan Program

Soru
-
Herkese iyi günler.
Yapmak istediğim işlem bir txt dosyasındaki ip numaralarını sıra ile dolaşmak her ip için bazı console komutları çalıştırmak.
İşlem sırası
İşlemler Hergün ve her saat tekrar edecek.
Txt dosyasında bulunan her satır için sırayla işlem yapılacak.
Txt dosyasındaki 1. ip deki işlemler yapılınca 2. ip 3.ip vs devam edilecek.
tüm ipler kontrol edilince alınan tüm her sonuç başka bir txt dosyasına aktarılacak.
İhtiyacım olan gün ve saat döngüsünün oluşturabilmek.
Yardımlarınız için teşekkür ederim
Yanıtlar
-
Kabaca şöyle bişey yapabilirsiniz;
public enum KomutYöneticisiDurumları { Beklemede, Başladı } static class IPKomutYöneticisi { private static List<IPAddress> IPAdresleri = new List<IPAddress>() ; public static KomutYöneticisiDurumları Durum { get; private set; } = KomutYöneticisiDurumları.Beklemede; public static void Oku(){ IPAdresleri = File.ReadAllLines("dosya/yolu/adresler.txt").Select(p=> IPAddress.Parse(p)).ToList(); } public static void Başla(){ Durum = KomutYöneticisiDurumları.Başladı; KomutlarıGönder(); } public static void Durdur(){ Durum = KomutYöneticisiDurumları.Beklemede; } private async static void KomutlarıGönder() { await Task.Delay(TimeSpan.FromHours(1)).ContinueWith(_=>{ IPAdresleri.ForEach(p=>{ Task.Run(()=>{ //p ip adresine komut gönderen kodlar buraya }); }); if(Durum == KomutYöneticisiDurumları.Başladı) KomutlarıGönder(); }); } }
e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
- Düzenleyen Önay YALÇINERModerator 11 Nisan 2019 Perşembe 10:11
- Yanıt Olarak İşaretleyen FatihKlavuz 11 Nisan 2019 Perşembe 12:21
-
Fatih;
Yukarıda verdiğim örnek saat başı, listedeki tüm IP adreslerine kodları aynı anda gönderiyor. Eğer sıra ile tek tek göndermesini istersen;
IPAdresleri.ForEach(p=>{ Task.Run(()=>{ //p ip adresine komut gönderen kodlar buraya }); }); olan bu kısmı; IPAdresleri.ForEach(p=>{ //p ip adresine komut gönderen kodlar buraya });
Yalnız!: Lisedeki son IP ye komut gönderilip işlemin bitiminden itibaren bir saat sonra baştan başlar.
olarak değiştirmen yeterli.
Tam bir saat sonra olmasını istersen if bloğunu ForEach'ın üzerine alabilirsin.
e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
- Düzenleyen Önay YALÇINERModerator 11 Nisan 2019 Perşembe 11:32
- Yanıt Olarak İşaretleyen FatihKlavuz 11 Nisan 2019 Perşembe 12:21
Tüm Yanıtlar
-
Kabaca şöyle bişey yapabilirsiniz;
public enum KomutYöneticisiDurumları { Beklemede, Başladı } static class IPKomutYöneticisi { private static List<IPAddress> IPAdresleri = new List<IPAddress>() ; public static KomutYöneticisiDurumları Durum { get; private set; } = KomutYöneticisiDurumları.Beklemede; public static void Oku(){ IPAdresleri = File.ReadAllLines("dosya/yolu/adresler.txt").Select(p=> IPAddress.Parse(p)).ToList(); } public static void Başla(){ Durum = KomutYöneticisiDurumları.Başladı; KomutlarıGönder(); } public static void Durdur(){ Durum = KomutYöneticisiDurumları.Beklemede; } private async static void KomutlarıGönder() { await Task.Delay(TimeSpan.FromHours(1)).ContinueWith(_=>{ IPAdresleri.ForEach(p=>{ Task.Run(()=>{ //p ip adresine komut gönderen kodlar buraya }); }); if(Durum == KomutYöneticisiDurumları.Başladı) KomutlarıGönder(); }); } }
e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
- Düzenleyen Önay YALÇINERModerator 11 Nisan 2019 Perşembe 10:11
- Yanıt Olarak İşaretleyen FatihKlavuz 11 Nisan 2019 Perşembe 12:21
-
Kabaca şöyle bişey yapabilirsiniz;
public enum KomutYöneticisiDurumları { Beklemede, Başladı } static class IPKomutYöneticisi { private static List<IPAddress> IPAdresleri = new List<IPAddress>() ; public static KomutYöneticisiDurumları Durum { get; private set; } = KomutYöneticisiDurumları.Beklemede; public static void Oku(){ IPAdresleri = File.ReadAllLines("dosya/yolu/adresler.txt").Select(p=> IPAddress.Parse(p)).ToList(); } public static void Başla(){ Durum = KomutYöneticisiDurumları.Başladı; KomutlarıGönder(); } public static void Durdur(){ Durum = KomutYöneticisiDurumları.Beklemede; } private async static void KomutlarıGönder() { await Task.Delay(TimeSpan.FromHours(1)).ContinueWith(_=>{ IPAdresleri.ForEach(p=>{ Task.Run(()=>{ //p ip adresine komut gönderen kodlar buraya }); }); if(Durum == KomutYöneticisiDurumları.Başladı) KomutlarıGönder(); }); } }
e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
Önay Hocam Teşekkür ederim
Yapmaya çalıştığım şey cisco switchlere bir script. Bu script ile text dosyasından aldığım ip adresine ilişkin console komutlarını çalıştırmak. switcden aldığım cevapları bir txt dosyasında saklamak. Ve tüm bunları hergün her saat başı tekrar etmek.
Bir de kaynak dosyamdaki her satırdaki işlemi tek tek yapmak. Örnek olarak
20 satırım var.
Mesela saat 13:00 de Bu kod. kaynak.txt teki 1. satırdaki ipyi alacak ilgili console kodlarını çalıştıracak
2. satıra geçecek. console kodlarını çalıştıracak
3. satıra geçecek. vs.
20 satırdaki ipler bitince saat 14:00 de yeniden
1. satırdaki ipden başlayacak
çalışacak
Yardımlarınız için teşekkür ederim.
-
Fatih;
Yukarıda verdiğim örnek saat başı, listedeki tüm IP adreslerine kodları aynı anda gönderiyor. Eğer sıra ile tek tek göndermesini istersen;
IPAdresleri.ForEach(p=>{ Task.Run(()=>{ //p ip adresine komut gönderen kodlar buraya }); }); olan bu kısmı; IPAdresleri.ForEach(p=>{ //p ip adresine komut gönderen kodlar buraya });
Yalnız!: Lisedeki son IP ye komut gönderilip işlemin bitiminden itibaren bir saat sonra baştan başlar.
olarak değiştirmen yeterli.
Tam bir saat sonra olmasını istersen if bloğunu ForEach'ın üzerine alabilirsin.
e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
- Düzenleyen Önay YALÇINERModerator 11 Nisan 2019 Perşembe 11:32
- Yanıt Olarak İşaretleyen FatihKlavuz 11 Nisan 2019 Perşembe 12:21
-
Fatih;
Yukarıda verdiğim örnek saat başı, listedeki tüm IP adreslerine kodları aynı anda gönderiyor. Eğer sıra ile tek tek göndermesini istersen;
IPAdresleri.ForEach(p=>{ Task.Run(()=>{ //p ip adresine komut gönderen kodlar buraya }); }); olan bu kısmı; IPAdresleri.ForEach(p=>{ //p ip adresine komut gönderen kodlar buraya });
Yalnız!: Lisedeki son IP ye komut gönderilip işlemin bitiminden itibaren bir saat sonra baştan başlar.
olarak değiştirmen yeterli.
Tam bir saat sonra olmasını istersen if bloğunu ForEach'ın üzerine alabilirsin.
e-mail: onay[nokta]yalciner[at]hotmail[nokta]com