Подключение Windows дисков к Linux через Samba
Bash
Через консоль, пароль можно не указывать, тогда его спросят:
smbclient "//zenon/my_share" -U user -W workgroup 'password'
Далее:
? - выводит список команд ? dir - краткая справка по команде dir ls, dir - выводит листинг каталога (аналог ls) pwd - текущий путь (аналог pwd)
PHP
Необходимо установить smbclient (как это сделать).
sudo apt-get install php-smbclient
- connect-linux-windows.php
$configuration = array('username' => 'Windows User', 'password' => 'Windows Password', 'domain' => 'domain'); // Содержимое файла $binary = ''; // Создаем состояние SMBClient: $state = smbclient_state_new(); // Инициализация SMBClient if (smbclient_state_init($state, $configuration['domain'], $configuration['username'], $configuration['password'])) { // Открываем каталог $dir = smbclient_opendir($state, 'smb://10.0.0.1/path$/path'); // Читаем содержимое каталога while (($entry = smbclient_readdir($state, $dir)) !== false) { echo "{$entry['name']} : {$entry['type']}\n"; } # Получаем содержимое файла $filename = '\\10.0.0.1\path\file.txt'; // => //10.0.0.1/path/file.txt if ($file = smbclient_open($state, rawurlencode('smb:' . preg_replace('/\\\/', '/', $filename)), 'r')) { # Чтение while (true) { $data = smbclient_read($state, $file, 100000); if (($data === false) || (strlen($data) === 0)) { break; } $binary .= $data; } // Закрываем файл smbclient_close($state, $file); // Удаляем файл smbclient_unlink($state, rawurlencode('smb:' . preg_replace('/\\\/', '/', $filename)) } else { // Невозможно открыть файл } } else { // невозможно зайти на шару } // Освобождаем ресурсы smbclient_state_free($state);
- read-dir.php
$state = smbclient_state_new(); smbclient_state_init($state, 'domain', 'user', 'password'); $dir = smbclient_opendir($state, 'smb://localhost/testshare'); while (($entry = smbclient_readdir($state, $dir)) !== false) { echo "{$entry['name']} : {$entry['type']}\n"; } smbclient_closedir($state, $dir);
- windows-file_get_contents.php
$configuration = array('username' => 'Windows User', 'password' => 'Windows Password'); # Windows file content $binary = ''; # Computing path $path = rawurlencode('smb://' . $configuration['username'] . ':' . $configuration['password'] . '@server' . $filename); # Opening & deleting file if ($binary = file_get_contents($path)) !== false) { unlink($path); } else { # Error }