Blog Single

Eğer Raspbian OS kullanıyorsanız otomatik ssh sunucusu kurulu olacağından bir sorun teşkil etmeyecektir. Fakat Ubuntu Mate gibi bir sistemde ssh server varsayılan olarak kurulu gelmeyeceğinden bağlantı için ssh server kurulumu gerekecektir.

Öncelikle cihazınızda ssh server kurulu olmaması durumuna ilişkin, terminal ekranında;

  • sudo su
  • sudo apt-get install openssh-server
    • ssh server'i kuruyoruz.
  • sudo nano /etc/ssh/sshd_config ile ilgili ssh server bilgilerine erişebilirsiniz.
  • Kurulum sonrasında, sudo /etc/init.d/ssh restart komutunu terminalden yollayınız.
    • aksi takdirde ssh server başlamayacaktır.

Cihaz üzerinde yapmanız gereken birşey daha var;

  • Cihazı yeniden başlatıp openssh-server'in her boot olduğunda çalışıp çalışmadığını test etmelisiniz.

Visual Studio üzerinde SSH bağlantısı nasıl sağlayabileceğimiz konusuna geçelim;

  • Öncelikle bir C# form uygulaması açınız,
  • Ardından Tools>Nuget Package Manager>Package Manager Console,
  • Açılan Package Manager Console kısmında en alt kısımda PM> yazısının hemen yanına,
  • Install-Package SSH.NET yazıp enter'a basarak ilgili paketin projemize yüklenmesini sağlıyoruz.
  • Burada Renci'nin SSH kütüphanesini nuget üzerinden yüklemiş olduk.

C# Form Uygulamamıza geçiyoruz;

  • Uygulamamıza iki adet buton ekliyoruz.
  • İlk buton Aç, İkinci buton Kapat olacak şekilde bilgileri düzenliyoruz.
  • Butonlarımızın amacı GPIO pinlerinin yönetilmesini sağlayacak kodları içereceği bilgisini paylaşalım.
  • Projemize using Renci.SshNet; ile ilgili kütüphanelerin kullanımını sağlayalım.

Butonların içerisine yazacağımız kodlara geçelim;

  • Kodlarımızda SSH Connection bilgilerine ilişkin ip adresi, kullanıcı adı ve şifresi bilgilerini yazıyor olacağız.

Aç butonu için kodlarımız;

try
            {
                using (var client = new SshClient("192.168.2.140", "user", "passwOrd"))
                {
                    client.Connect();
                    SshCommand cmd = client.RunCommand("python /var/www/html/test_on.py");
                    cmd.Execute();
                    client.Disconnect(); client.Dispose();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("SSH Bağlantı sorunu oluştu !");
            }

Kapat butonu için kodlarımız;

try
            {
                using (var client = new SshClient("192.168.2.140", "user", "passwOrd"))
                {
                    client.Connect();
                    SshCommand cmd = client.RunCommand("python /var/www/html/test_off.py");
                    cmd.Execute();
                    client.Disconnect(); client.Dispose();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("SSH Bağlantı sorunu oluştu !");
            }

Raspberry Pi'ye komutları terminal üzerinden göndermiş olduk. Buton üzerinden ssh ile gönderdiğimiz komutlar 5sn gecikmeli olarak çalışabilmektedir, bunun sebebi connection ile komut yollamayı using ile tek bir buton üzerinde yazmış olmamızdan dolayıdır. Aksi bir durum olmadığında anlık çalışmaktadır.

Not: Eğer openssh-server kurmadan cihaza bağlanmak isterseniz, C# üzerinde System.Net.Sockets.SocketException hatası alacağınızı unutmamanızı hatırlatmış olayım.

Bu Makaleyi kendimden de birşeyler katarak, Tarık Kızıltan'ın ricası ve kendi döküman notlarından da yararlanarak hazırladım. Emeğinden ve Makale paylaşımı için kendisine ayrıca teşekkür ediyorum.

Bu makaleyi paylaşın:
İstanbul'da yaşıyorum.Web üzerinde Frontend/Backend Geliştirmenin yanı sıra, Android Geliştirme, PHP/ASP.NET, C# Yazılım Uzmanlığı ve Java konuları işliyorum. Kod Şiirdir, onları seviyorum.

Bir yorum bırakın