160 likes | 426 Views
BM-308 Paralel Programlamaya Giriş Bahar 201 4 ( 1 . Sunu ) ( Yrd . Do ç . Dr. Deniz Dal). ssh ( s ecure s h ell) . Komut satırı , uzaktan erişim protokolü ve bu protokol ile iletişim kuran yazılım setidir .
E N D
BM-308 Paralel Programlamaya Giriş Bahar 2014 (1. Sunu) (Yrd. Doç. Dr. Deniz Dal)
ssh (secureshell) • Komut satırı, uzaktanerişimprotokolüvebuprotokolileiletişimkuranyazılımsetidir. • Benzerlerindenolan Telnet ilearalarındaki en önemlifarksağlamışolduğugüvenliveşifrelenmişkabukerişimidir. • sshgünümüzdetümLinuxveUnix dağıtımlarındaöntanımlıuzaktanerişimaracıolarakkullanılmaktadır. • sshuzaktakiLinuxveUnix makinelerdegüvenlibirşekildekabukaçmamızave o makinedekullanıcımızaverilmişhaklarölçüsündeçalışabilmemizeimkantanır. • Ayrıcauzakmakineylegüvenlibirşekildedosyaalışverişinede imkansağlamaktadır.
ssh sshkullanıcı_ismi@makine_ismi(yada ip'si) sshmakine_ismi(yada ip'si) -l kullanıcı_ismi Örneğin; sshtest@192.168.81.12 sshtest@makine.ismi.com ssh192.168.81.12 -l test sshmakine.ismi.com -l test
ssh • sshyaparkenkullanıcıismibelirtilmezseyerelmakinedekikullanıcıisminizuzakmakineyebağlantısağlanırkenkullanılır. test@lab13:~$sshmakine test@makine's password:
scp (securecopy) • sshiledosyatransferiyapmak da mümkündür. • Bununiçinssh'ınsözdiziminebenzerbirşekildescpkomutukullanılır. • Kullanımı; scpdosya_adıkullanıcı@makine_adı:dizin_yolu scpdosyatest@192.168.81.12:/tmp/ scp-r dizintest@192.168.81.12:~/
LİNUX ORTAMINDA C++ KODLARININ YAZILMASI, DERLENMESİ VE ÇALIŞTIRILMASI • İlk aşamada .cpp uzantılı bir C++ program dosyası oluşturunuz. Bu işlemi touch komutu ile yapabilirsiniz. • Örnek:$touch HelloWorld.cpp • Dahasonraya bir komut satırı editörü (viveyanano gibi) ya da bir grafik editörü (geditgibi) yardımıyla programınızı yazınızvekaydediniz. • Artık programınızı derleyip çalıştırabilirsiniz. Bu işlem için bizim sistemimizde kurulu bulunan g++adlı C++ derleyicisinden faydalanabilirsiniz. • Örnek:$g++ HelloWorld.cpp
LİNUX ORTAMINDA C++ KODLARININ YAZILMASI, DERLENMESİ VE ÇALIŞTIRILMASI • Derleme işlemi başarıyla sonlandırılır ise eğer derlemeyi yaptığınız dizinde a.out adında executable (çalıştırılabilir) bir dosya oluşur. • Bu dosyayı komut satırından aşağıdaki gibi çalıştırabilirsiniz.(Programınızın komut satırı argümanı almadığını varsayıyorum.) • Örnek:$./a.out • Eğer programınızın a.outdışında bir executable dosya adıyla çalıştırılmasını istiyorsanız programınızı şöyle derlemelisiniz. • Örnek:$g++HelloWorld.cpp -o deneme.x • Örnek:$./deneme.x
UYGULAMA 1 Kullanıcıdan ekrana kaç kere Hello World yazacağını klavye yoluyla cout ve cin deyimleri ile alan bir C++ programı yazınız,derleyiniz ve calıştırınız. (mainfonksiyonukendineargüman almıyor.) (Dosya adı olarak HelloWorld1.cppkullanabilirsiniz.)
argc ve argv Parametreleri int main(int argc, char* argv[ ]) { return 0; } int main() { return 0; }
argc ve argv Parametreleri (devam) mainfonksiyonuiçindekullanılanargc(argumentcount)adlı, intveritipindeki ilk argüman programınçalıştırılmasıesnasındakomut satırındangirilenkomutların/kelimelerin sayısınıbelirtir. Örnek:$ ./deneme.x -n 100 Yukarıdaki örnekte argc 3 olarak değerlendirilir. Çalıştırılan programın adıda (./deneme.x)argcninsayısına katkıda bulunur.
argc ve argv Parametreleri (devam) mainfonksiyonuiçindekullanılanargvparametresiise komut satırından girilen parametrelere (karakterdizileri) pointer tutanbirdizidir. Örnek:$ ./deneme.x -n 100 Yukarıdaki örnekte argv[0] =./deneme.x argv[1]= -n argv[2]=100 argv[1][0]=-veargv[1][1]=n
ÖRNEK Aşağıdaki kod parçası komut satırından çalıştırılan bir C++ programının argümanlarını ekrana basar. Argumanlar.cpp #include <iostream>//coutusing namespace std; int main(intargc, char* argv[ ]){ for(inti=0; i < argc; i++)cout<<argv[i]<<endl; return 0; }
atoiveatofFonksiyonları • Komut satırından girilen her türlü parametre argv dizisi içerisinde string (karakterdizisi) olarak saklanır. (Rakam olarak girildiği düşünülen argümanlar bile.)Yani bütün bu parametreler karakter dizileridir aslında. • Bu yüzden bu parametrelerin rakamlara dönüştürülmesi gerektiğinde atoi ve atof fonksiyonlarına ihtiyaç duyulur. • atoi (char *str):fonksiyonu kendine argüman olarak aldığı string i integer a çevirir. • atof (char *str):fonksiyonu kendine argüman olarak aldığı string i ondalıklı sayıya çevirir. (floatingpoint) • atoiveatoffonksiyonlarını C++ programlarımızın içinde kullanabilmek için standart kütüphaneden <cstdlib>header dosyasını programımızın başına eklemeliyiz. #include <cstdlib>
ÖRNEK Aşağıdaki C++ kod parçası ne iş yapar? for (i=1; i<argc; i++) { if (argv[i][0] == '-') { if (argv[i][1] == 'n') { count=atoi(argv[++i]); break; } } }
UYGULAMA 2 Kullanıcıdan ekrana kaç kere Hello World yazacağını komutsatırından argüman olarak alan bir C++ programı yazınız,derleyiniz ve calıştırınız. (mainfonksiyonukendineargüman alıyor.) (Dosya adı olarak HelloWorld2.cppkullanabilirsiniz.)