SSH Kütüphanesi


    × Bunları biliyor muydunuz?
"Dinamik bir kütüphaneyi tanımlarken sınıf isminin başına Internal ön eki getirirerek statik erişimli hale getirebilirsiniz. "


SSH (Secure Shell) güvenli veri iletimi için kriptografik ağ protokolüdür. Ssh ile ağa bağlı olan iki bilgisayar arasında veri aktarımı güvenlik kanalı üzerinden güvensiz bir ağda yapılır. Bu durumda ağda Ssh ile haberleşen makinelerden biri ssh sunucusu diğeri ssh istemcisi olur. Bu protokol şartları SSH-1 ve SSH-2 olmak üzere iki önemli sürüm üzerinden birbirinden ayrılır.

Ssh kabuk hesabına erişim için Unix ve benzeri işletim sistemlerinde protokolün en iyi uygulaması olarak bilinir, ama aynı zamanda Windows üzerindeki hesaplara erişim için de kullanılabilir. Ssh Telnet ve diğer uzaktan kabuğa erişim yapan güvensiz protokollerin (Berkeley rsh ve rexec protokolü gibi) yerine güvenli veri iletimini sağlaması için tasarlanmıştır.

ZN Framework'te de SSH'ın nasıl kullanılacağına dair anlatıma yer vermeye çalışacağız.

 

 

# Kurulum


ZN dağıtımları için kurulum gerekmez.

↓ composer require znframework/package-remote

 

 

# Yapılandırma


Aşağıda ssh bağlantı ayarlarını yapılandırmak için kullanılan dizi gösterilmiştir.

Dosya: Config/Services.php
SSH
string $host = '' Host adı.
string $user = '' Kullanıcı adı.
string $password = '' Kullanıcı şifresi.
int $port = 22 Bağlantı portu.
array $methods = [] Metotlar.
array $callbacks = [] Geri çağrım işlevleri.

 

 

# Yöntemler


SSH::command(string $command) : this
SSH::run(string $command = NULL) : resource
SSH::output(int $length = 4096) : string
SSH::upload(string $localPath, string $remotePath) : bool
SSH::download(string $remotePath, string $localPath) : bool
SSH::createFolder(string $path, int $mode = 0777, bool $recursive = true) : bool
SSH::deleteFolder(string $path) : bool
SSH::deleteFile(string $path) : bool
SSH::rename(string $oldName, string $newName) : bool
SSH::permission(string $path, int $type = 0775) : bool
SSH::new(array $config) : this

 

 

# Command


Komut satırı çalıştırmak için kullanılır. Tek satır veya command() yönteminin birden fazla kullanımı ile çoklu komut gönderimi sağlayabilirsiniz.

string $command Çalıştırılacak komut.
return this

Kullanımı

SSH::command('/usr/local/bin/php -i')
   ->command('/usr/bin/ls public_html/images')
   ->run();

 

 

# Run


Gönderilen komutları çalıştırmak için kullanılır. Nihai yöntem olarak kullanılır.

string $command = NULL command() işlevinin alternatifidir. Kullanımı zorunlu değildir.
return resource

Kullanımı

SSH::command('/usr/local/bin/php -i')
   ->command('/usr/bin/ls public_html/images')
   ->run();

 

 

# Output


İşlemlerin bitiminde sonucu ekrana bastırmak için kullanılır.

int $length = 4096 Çıktının byte cinsinden uzunluğu yada kaç karakter uzunlukta olacağı.
return string

Kullanımı

SSH::output();

 

 

# Upload


Sunucuya dosya yüklemek için kullanılır.

string $localPath Yüklenecek dosya.
string $remotePath Sunucuda nereye yüklenecek.
return bool

Kullanımı

SSH::upload('local/example.txt', 'remote/example.txt');

 

 

# Download


Sunucudan dosya indirmek için kullanılır.

string $remotePath Sunucuda nereye yüklenecek.
string $localPath Yüklenecek dosya.
return bool

Kullanımı

SSH::upload('remote/example.txt', 'local/example.txt');

 

 

# CreateFolder


Sunucuda dizin oluşturmak için kullanılır.

string $path Oluşturulacak dizin.
int $mode = 0777 Dosya oluşturma izni.
bool $recursive = true İç içe dizin oluşturulabilme.
return bool

Kullanımı

SSH::createFolder('remote/example');

 

 

# DeleteFolder


Sunucudan dizin silmek için kullanılır.

string $path Oluşturulacak dizin.
return bool

Kullanımı

SSH::deleteFolder('remote/example');

 

 

# DeleteFile


Sunucudan dosya silmek için kullanılır.

string $path Silinecek dosya.
return bool

Kullanımı

SSH::deleteFile('remote/example.txt');

 

 

# Rename


Sunucuda yer alan dosya veya dizin adını değiştirmek için kullanılır.

string $oldName Dosyanın eski adı.
string $newName Dosyanın yeni adı.
return bool

Kullanımı

SSH::rename('remote/example.txt', 'remote/new-example.txt');

 

 

# Permission


Dosyanın yetki modunu değiştirmek için kullanılır.

string $path Dosya adı.
int $type = 0775 Dosya modu.
return bool

Kullanımı

SSH::permission('remote/example.txt', 0644);

 

 

# New


Sunucuya yapılandırma dosyası bağlantı ayarları dışında yeni bir bağlantı sağlamak için kullanılır.

array $config Bağlantı ayarları.
return this

Kullanımı

$config = 
[
    'host'     => 'localhost',
    'user'     => 'test',
    'password' => '1234'
];

$dssh = SSH::new($config);
$dssh->command('usr/local/bin/php -i')->run();