Hızlı Konu Açma

Hızlı Konu Açmak için tıklayınız.

Son Mesajlar

Konulardaki Son Mesajlar

Reklam

Forumda Reklam Vermek İçin Bize Ulaşın

Java İle Harici Sistem Kodu Yapımı

YaSa22

Fahri Üye
Fahri Üye
Katılım
12 Temmuz 2014
Mesajlar
2,293
Tepkime puanı
2
Puanları
0
Konum
GTA
--------------------------------------------------------------------

Java programlama dilinde, herhangi bir işletim sistemi üzerinde, sistem komutu yada harici herhangi bir

Linkleri sadece kayıtlı üyeler görebilir. Linkleri görebilmek için Üye Girişi yapın veya ücretsiz olarak Kayıt Olun

koşturmak elbet mümkün, fakat bu işlemleri kolaylaştıracak bir

Linkleri sadece kayıtlı üyeler görebilir. Linkleri görebilmek için Üye Girişi yapın veya ücretsiz olarak Kayıt Olun

,

Linkleri sadece kayıtlı üyeler görebilir. Linkleri görebilmek için Üye Girişi yapın veya ücretsiz olarak Kayıt Olun

içinde şu anda bulunmuyor. (ör: Herhangi bir işletim sistemi üzerinde kullanıcı hesabı oluşturmak veya bir kullanıcı hesabının resmini değiştirmek gibi ) . Bu gibi işlemler için mevcut işletim sisteminin

Linkleri sadece kayıtlı üyeler görebilir. Linkleri görebilmek için Üye Girişi yapın veya ücretsiz olarak Kayıt Olun

‘sini yani Komut Satırı Arayüzünü kullanmak durumundayız. Bu arayüzleri kullanabilmek içinse, hangi işlemi yapmak istiyorsak o işlemi icra edecek komut yada sistem programlarını ve kullanılış biçimlerini bilmek durumundayız. ( ör: Windows üzerinde komut satırında bir dizine ait tüm dosyaları ve dizinleri listelemek istiyorsak; dir komutunu işletmeliyiz ) . Dikkat edeceğimiz husus “dir” bir komuttur bir sistem programı değil. Yani “C:\Windows\system32″ dizininde “dir.exe” diye bir program bulunması söz konusu değildir. Söz konusu işletim sistemi Linux türevi ise bu komut ls olacaktır. İsterseniz söz konusu bilgileri güzel bir örnek ile taçlandıralım. Örneğimizde, Windows ve Linux türevi bir işletim sistemi üzerinde bir kullanıcı hesabı oluşturalım. Programımızı Swing çatısı üzerine kuracağımız için, kod kalabalığını tek tek anlatmak yerine işimize yarayan asıl kod bölümlerini açıklayalım. Zaten kod kaynağında satır satır açıklamaları bulabileceksiniz.


1) Bize mevcut işletim sisteminin Windows tabanlı mı? Linux tabanlı mı? Olduğu bilgisi gerekiyor, bunu ayrıştırmak için ise

Linkleri sadece kayıtlı üyeler görebilir. Linkleri görebilmek için Üye Girişi yapın veya ücretsiz olarak Kayıt Olun

sınıfının getProperty metodundan faydalanıyoruz.



  • String osName = System.getProperty(“os.name”);

2) Dönen ifadeyi contains metoduna tabi tutarak işimize yarayacak dallanmayı yapıyoruz.


  • osName.contains(“Windows”) || osName.contains(“Linux”)

3) Harici komut veya program koşturmak için Java’ da

Linkleri sadece kayıtlı üyeler görebilir. Linkleri görebilmek için Üye Girişi yapın veya ücretsiz olarak Kayıt Olun

,

Linkleri sadece kayıtlı üyeler görebilir. Linkleri görebilmek için Üye Girişi yapın veya ücretsiz olarak Kayıt Olun

ve

Linkleri sadece kayıtlı üyeler görebilir. Linkleri görebilmek için Üye Girişi yapın veya ücretsiz olarak Kayıt Olun

sınıflarından faydalanacağız. Aslında ikiside aynı işi görmekte fakat Runtime sınıfının kontrol edilebilirliği daha güç. Windows üzerinde user oluşturmak çok kolay, her iki sınıfında kullanımını göstermek adına Windows üzerinde Runtime sınıfını kullanalım.

Windows için ;

Aşağıdaki betiği koşturmak yeterli.

Linkleri sadece kayıtlı üyeler görebilir. Linkleri görebilmek için Üye Girişi yapın veya ücretsiz olarak Kayıt Olun


Runtime sınıfının getRuntime metodu ile bir boş process çağırıyoruz.
exec metodu ile process oluşturulup koşturuluyor ve bizim tanımladığımız getMessagemetodu ile standart uyarı, bilgi ve hata mesajları ekrana bastırılıyor.


  • Runtime rt = Runtime.getRuntime();



  • String win32=”net user /add “+user.getText()+” “+pass.getText();



  • getMessage(rt.exec(win32));

Linux için;


Linkleri sadece kayıtlı üyeler görebilir. Linkleri görebilmek için Üye Girişi yapın veya ücretsiz olarak Kayıt Olun




  • usta@ubuntu:~$ sudo useradd UserName -g GroupName -b /home -m



  • usta@ubuntu:~$ passwd UserPass

İlk satırın icrası ardından

Linkleri sadece kayıtlı üyeler görebilir. Linkleri görebilmek için Üye Girişi yapın veya ücretsiz olarak Kayıt Olun

bizden yönetici şifresi isteyecektir. İkinci aşamada ise oluşturduğumuz hesabın parolasını belirteceğiz. Şu varki, klavye haricinde bir programlama dilinden şifre bilgisi girmek istiyorsak, kod satırımıza –S parametresi eklemeliyiz.



  • ProcessBuilder pb = new ProcessBuilder(commands);



  • Process process = pb.start();

ProcessBuilder sınıfının kurucu metoduna, ArrayList türündeki komutlarımızı gönderiyoruz. Ardından start vererek işlemi başlatıyoruz. Kabuktaki ilk satırı işlettikten sonra, yönetici parolası istenecek şimdi onu girelim..


  • stdin= new PrintWriter( process.getOutputStream());



  • stdin.println(pwdSudo.getText());



  • stdin.flush();

-S parametresi burada

Linkleri sadece kayıtlı üyeler görebilir. Linkleri görebilmek için Üye Girişi yapın veya ücretsiz olarak Kayıt Olun

sınıfı aracılığı ile ekrana yönetici şifresi basmaya yarıyor.getOutputStream metodu ile, konsola bir giriş yapılacağını belirtiyoruz. flush metodu ise, buffer’ da veri bulunuyorsa bunları tamamen aktarmaya yarıyor. Konsoldaki ikinci satırda ise, aynı şekilde oluşturduğumuz kullanıcının şifresini giriyoruz. Şimdi her şey güzel fakat. İşlem başarılı mı? Hatalı mı? Bunları bilmek hakkımız. Bunun için mevcut process’ imizingetInputStream() ve getErrorStream() metodlarından faydalanıyoruz ve satır satır komut arayüzünün bize sunduğu bilgileri çekiyoruz ve istediğimiz gibi ekranda gösteriyoruz. Bu şekilde Java ile çalışan, bir komut dizini programı yapılabilir, yada aynı şekilde başka başka executable’ lar çalıştırılabilir..





  • Linkleri sadece kayıtlı üyeler görebilir. Linkleri görebilmek için Üye Girişi yapın veya ücretsiz olarak Kayıt Olun


  • Linkleri sadece kayıtlı üyeler görebilir. Linkleri görebilmek için Üye Girişi yapın veya ücretsiz olarak Kayıt Olun

 

Users Who Are Viewing This Konu (Users: 0, Guests: 1)

Üst