Подключение 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
}