- Регистрация
- 6 Ноя 2025
- Сообщения
- 138
- Реакции
- 3
- Баллы
- 18
SMBclient: Ваш Надежный Помощник в Мире SMB/CIFS.
Ситуация из жизни: сидишь ты на своем любимом Linux-сервере, все хорошо, но тут бац — и понадобилось срочно стянуть файлик с виндовой шары. Вариантов, конечно, куча: можно попросить админа скинуть по почте, можно флешку нести, можно FTP поднимать. Но когда надо быстро и без лишних телодвижений, я всегда вспоминаю про старый добрый smbclient.
Помню свой первый раз, когда только начинал админить. Надо было снять бекап базы на виндовую файлопомойку, а я даже не знал, с какой стороны подойти к SMB. Нагуглил smbclient, попробовал — и офигел от простоты. С тех пор это мой стандартный инструмент для таких задач.
---
Что это за хрень такая
smbclient — это консольная утилита из состава Samba, которая позволяет подключаться к виндовым шарам (общим папкам) прямо из Linux. Работает как старый добрый FTP: зашел, посмотрел, скачал, залил, вышел.
Винда с линуксом общаются по протоколу SMB/CIFS, и без специальных инструментов у тебя ничего не выйдет. А smbclient как раз тот самый инструмент, который это умеет из коробки.
Можно работать в интерактивном режиме — когда ты вводишь команды руками. А можно в пакетном — когда пишешь одной строкой, что сделать, и он сам всё выполняет. Для скриптов это вообще идеально.
---
Где это реально нужно
Первый и самый частый сценарий — доступ к виндовым шарам с Linux. У админов вечно так: данные лежат на файлопомойке под виндой, а тебе с сервера надо их забрать. Без smbclient начинаются танцы с бубном: ищи какую-то графическую программу, ставь зависимости, настраивай права. А тут одна команда — и готово.
Второй — автоматизация. Бекапы, синхронизация, загрузка отчетов. Настроил крон раз в месяц, и он сам кидает файлы на шару. Никого просить не надо, всё тихо работает в фоне.
Третий — диагностика. Если вдруг шара перестала открываться, smbclient поможет понять, в чем дело: сервак не пингуется, пароль не подходит, прав нет. Вывод ошибок там довольно понятный, даже для новичка.
Четвертый — работа с принтерами, но это уже экзотика, мало кто юзает. Разве что в совсем древних конторах, где до сих пор печатают через SMB.
---
Как поставить
В Debian или Ubuntu ставится элементарно:
В Fedora или CentOS команда чуть другая:
В macOS, если стоит Homebrew, тоже без проблем:
После установки проверяем, что всё встало:
Если выдало версию — значит, можно работать. Обычно там цифры типа 4.15 или около того.
---
Как подключиться к шаре
Самый простой вариант выглядит так:
Тут //192.168.1.100/share — это путь к шаре. Важно: обратные слеши, именно такие, как в винде. Не как в линуксе. -U username — имя пользователя. Пароль спросит отдельно, после запуска.
Если не хочешь, чтобы пароль спрашивали (например, в скрипте), можно сразу передать:
Но тут надо понимать: пароль останется в истории команд, если ты в интерактиве работаешь. Для скриптов лучше использовать файлы с правами 600 или переменные окружения, чтобы пароль не светился.
Если нужно указать рабочую группу или домен, добавляем -W:
После успешного подключения появится приглашение smb: \>. Значит, ты внутри шары, можно работать.
---
Какие команды можно юзать
Когда зашел внутрь, команды очень похожи на FTP. Если ты хоть раз работал в командной строке, разберешься за пару минут.
Самое нужное:
· ls — посмотреть, что лежит в текущей папке.
· cd папка — перейти в другую директорию.
· pwd — показать, где ты сейчас.
· get файл — скачать файл с сервера к себе. Можно указать имя, под которым сохранить, если не хочешь оставлять оригинальное.
· put файл — залить свой файл на сервер.
· del файл — удалить файл на сервере.
· mkdir папка — создать новую папку.
· rmdir папка — удалить папку (только пустую).
· rename старое новое — переименовать файл или папку.
· help — показать список всех команд, если что-то забыл.
· exit или quit — выйти.
Если нужно скачать все файлы с каким-то расширением, используется mget. Если залить все из текущей папки — mput. Но с ними надо аккуратно, потому что подтверждения на каждый файл не спрашивает, сразу качает всё подряд.
---
Как это работает в скриптах
В интерактиве удобно, когда надо что-то сделать руками. Но для автоматизации используют опцию -c. Ты просто пишешь одной строкой, что выполнить, и smbclient сам всё делает.
Например, скачать файл без лишних вопросов:
Можно выполнить несколько команд подряд. Допустим, сначала перейти в папку backup, а потом скачать оттуда архив:
Или залить файл на сервер:
После выполнения всех команд smbclient сам закрывает соединение. Для скриптов это самое то — запустил, и забыл.
---
Реальный пример из жизни
Был у меня проект, где нужно было каждую ночь заливать дамп базы на виндовую шару. Руками это делать задрало, и я написал простой скрипт.
Создал файл /usr/local/bin/backup_to_share.sh с таким содержимым:
Тут всё просто: берем текущую дату, делаем дамп базы, заливаем на шару, удаляем локальный файл, чтобы место не забивал.
Потом сделал скрипт исполняемым:
И добавил в крон:
Вписал туда строчку:
Всё. Каждую ночь в 2 часа бекап сам улетает на шару. Я про него вообще забыл, а он работает.
---
Еще один случай
Бывало, что нужно было стянуть все логи за месяц. Они лежали в папке logs на шаре. Руками качать каждый файл — устанешь. Я делал так:
И все файлы с расширением .log сами сваливались в текущую папку. Красота.
---
Что делать, если не работает
Иногда smbclient ругается. Самые частые ошибки:
NT_STATUS_ACCESS_DENIED — значит, у пользователя нет прав на эту папку. Иди проверяй на виндовой стороне, кто и что может делать.
NT_STATUS_LOGON_FAILURE — кривой логин или пароль. Либо пользователь не имеет права подключаться с этого IP. Такое бывает, если на винде настроены ограничения.
NT_STATUS_CONNECTION_REFUSED — сервер не отвечает по SMB. Возможно, он выключен или фаервол режет порты 445 и 139. Проверь, открыты ли они.
NT_STATUS_HOST_UNREACHABLE — сервер недоступен по сети. Тут банально пинг смотри.
Если долго подключается — возможно, проблемы с DNS или NetBIOS. Попробуй использовать IP вместо имени сервера. Или добавь опцию -m SMB2, чтобы принудительно включить более новую версию протокола.
Если вместо русских букв кракозябры — проблемы с кодировкой. Лечится так:
---
Полезные фишки, которые пригодятся
Есть несколько опций, которые я постоянно юзаю:
· -m SMB2 или -m SMB3 — принудительно выбрать версию протокола. Помогает, если старый SMB1 не работает.
· -O unix — включает поддержку линуксовых расширений типа симлинков.
· -d 3 — уровень отладки. Чем цифра больше, тем подробнее лог. Когда совсем непонятно, почему не работает, включаешь отладку и смотришь.
· -N — не спрашивать пароль. Для анонимного доступа.
· -W WORKGROUP — указать рабочую группу или домен.
---
smbclient или монтирование через mount
Есть два способа работать с SMB-шарами в Linux: через mount -t cifs и через smbclient.
Монтирование удобно, когда шара нужна постоянно. Ты просто примонтировал её в какую-то папку и работаешь как с обычными файлами. Можно заходить файловым менеджером, открывать документы, копировать.
smbclient удобен для разовых операций или скриптов. Быстро зашел, сделал дело, вышел. Не надо ничего монтировать, потом размонтировать, следить, чтобы не повисло.
Я юзаю оба подхода. Если шара нужна постоянно — монтирую. Если надо просто стянуть файлы или залить бекап — smbclient.
---
smbclient — это простая и надежная вещь. В ней нет никаких наворотов, графических интерфейсов и прочего, но свою работу она делает на отлично. Быстро подключиться к виндовой шаре, скачать файлы, залить данные, выполнить команду в скрипте — это её конек.
Если ты админишь Linux и хоть раз сталкивался с необходимостью забрать файлы с винды — держи smbclient под рукой. Установка занимает минуту, команды простые, результат быстрый.
Ситуация из жизни: сидишь ты на своем любимом Linux-сервере, все хорошо, но тут бац — и понадобилось срочно стянуть файлик с виндовой шары. Вариантов, конечно, куча: можно попросить админа скинуть по почте, можно флешку нести, можно FTP поднимать. Но когда надо быстро и без лишних телодвижений, я всегда вспоминаю про старый добрый smbclient.
Помню свой первый раз, когда только начинал админить. Надо было снять бекап базы на виндовую файлопомойку, а я даже не знал, с какой стороны подойти к SMB. Нагуглил smbclient, попробовал — и офигел от простоты. С тех пор это мой стандартный инструмент для таких задач.
---
Что это за хрень такая
smbclient — это консольная утилита из состава Samba, которая позволяет подключаться к виндовым шарам (общим папкам) прямо из Linux. Работает как старый добрый FTP: зашел, посмотрел, скачал, залил, вышел.
Винда с линуксом общаются по протоколу SMB/CIFS, и без специальных инструментов у тебя ничего не выйдет. А smbclient как раз тот самый инструмент, который это умеет из коробки.
Можно работать в интерактивном режиме — когда ты вводишь команды руками. А можно в пакетном — когда пишешь одной строкой, что сделать, и он сам всё выполняет. Для скриптов это вообще идеально.
---
Где это реально нужно
Первый и самый частый сценарий — доступ к виндовым шарам с Linux. У админов вечно так: данные лежат на файлопомойке под виндой, а тебе с сервера надо их забрать. Без smbclient начинаются танцы с бубном: ищи какую-то графическую программу, ставь зависимости, настраивай права. А тут одна команда — и готово.
Второй — автоматизация. Бекапы, синхронизация, загрузка отчетов. Настроил крон раз в месяц, и он сам кидает файлы на шару. Никого просить не надо, всё тихо работает в фоне.
Третий — диагностика. Если вдруг шара перестала открываться, smbclient поможет понять, в чем дело: сервак не пингуется, пароль не подходит, прав нет. Вывод ошибок там довольно понятный, даже для новичка.
Четвертый — работа с принтерами, но это уже экзотика, мало кто юзает. Разве что в совсем древних конторах, где до сих пор печатают через SMB.
---
Как поставить
В Debian или Ubuntu ставится элементарно:
Bash:
sudo apt update sudo apt install smbclient В Fedora или CentOS команда чуть другая:
Bash:
sudo dnf install samba-client В macOS, если стоит Homebrew, тоже без проблем:
Bash:
brew install samba После установки проверяем, что всё встало:
Bash:
smbclient-V Если выдало версию — значит, можно работать. Обычно там цифры типа 4.15 или около того.
---
Как подключиться к шаре
Самый простой вариант выглядит так:
Bash:
smbclient//192.168.1.100/share -U username Тут //192.168.1.100/share — это путь к шаре. Важно: обратные слеши, именно такие, как в винде. Не как в линуксе. -U username — имя пользователя. Пароль спросит отдельно, после запуска.
Если не хочешь, чтобы пароль спрашивали (например, в скрипте), можно сразу передать:
Bash:
smbclient//192.168.1.100/share -U username%password Но тут надо понимать: пароль останется в истории команд, если ты в интерактиве работаешь. Для скриптов лучше использовать файлы с правами 600 или переменные окружения, чтобы пароль не светился.
Если нужно указать рабочую группу или домен, добавляем -W:
Bash:
smbclient//192.168.1.100/share -U username -W WORKGROUP После успешного подключения появится приглашение smb: \>. Значит, ты внутри шары, можно работать.
---
Какие команды можно юзать
Когда зашел внутрь, команды очень похожи на FTP. Если ты хоть раз работал в командной строке, разберешься за пару минут.
Самое нужное:
· ls — посмотреть, что лежит в текущей папке.
· cd папка — перейти в другую директорию.
· pwd — показать, где ты сейчас.
· get файл — скачать файл с сервера к себе. Можно указать имя, под которым сохранить, если не хочешь оставлять оригинальное.
· put файл — залить свой файл на сервер.
· del файл — удалить файл на сервере.
· mkdir папка — создать новую папку.
· rmdir папка — удалить папку (только пустую).
· rename старое новое — переименовать файл или папку.
· help — показать список всех команд, если что-то забыл.
· exit или quit — выйти.
Если нужно скачать все файлы с каким-то расширением, используется mget. Если залить все из текущей папки — mput. Но с ними надо аккуратно, потому что подтверждения на каждый файл не спрашивает, сразу качает всё подряд.
---
Как это работает в скриптах
В интерактиве удобно, когда надо что-то сделать руками. Но для автоматизации используют опцию -c. Ты просто пишешь одной строкой, что выполнить, и smbclient сам всё делает.
Например, скачать файл без лишних вопросов:
Bash:
smbclient//192.168.1.100/share -U username%password -c "get report.txt" Можно выполнить несколько команд подряд. Допустим, сначала перейти в папку backup, а потом скачать оттуда архив:
Bash:
smbclient//192.168.1.100/share -U username%password -c "cd backup; get data.tar.gz" Или залить файл на сервер:
Bash:
smbclient//192.168.1.100/share -U username%password -c "put /home/user/backup.tar.gz" После выполнения всех команд smbclient сам закрывает соединение. Для скриптов это самое то — запустил, и забыл.
---
Реальный пример из жизни
Был у меня проект, где нужно было каждую ночь заливать дамп базы на виндовую шару. Руками это делать задрало, и я написал простой скрипт.
Создал файл /usr/local/bin/backup_to_share.sh с таким содержимым:
Bash:
#!/bin/bash DATE=$(date+%Y%m%d) DUMP_FILE="/tmp/backup_$DATE.sql" mysqldump-u root mydb > $DUMP_FILE smbclient//192.168.1.100/backups -U backupuser%password -c "put $DUMP_FILE" rm$DUMP_FILE Тут всё просто: берем текущую дату, делаем дамп базы, заливаем на шару, удаляем локальный файл, чтобы место не забивал.
Потом сделал скрипт исполняемым:
Bash:
chmod+x /usr/local/bin/backup_to_share.sh И добавил в крон:
Bash:
crontab-e Вписал туда строчку:
Код:
0 2 * * * /usr/local/bin/backup_to_share.sh Всё. Каждую ночь в 2 часа бекап сам улетает на шару. Я про него вообще забыл, а он работает.
---
Еще один случай
Бывало, что нужно было стянуть все логи за месяц. Они лежали в папке logs на шаре. Руками качать каждый файл — устанешь. Я делал так:
Bash:
smbclient//192.168.1.100/share -U username%password -c "cd logs; mget *.log" И все файлы с расширением .log сами сваливались в текущую папку. Красота.
---
Что делать, если не работает
Иногда smbclient ругается. Самые частые ошибки:
NT_STATUS_ACCESS_DENIED — значит, у пользователя нет прав на эту папку. Иди проверяй на виндовой стороне, кто и что может делать.
NT_STATUS_LOGON_FAILURE — кривой логин или пароль. Либо пользователь не имеет права подключаться с этого IP. Такое бывает, если на винде настроены ограничения.
NT_STATUS_CONNECTION_REFUSED — сервер не отвечает по SMB. Возможно, он выключен или фаервол режет порты 445 и 139. Проверь, открыты ли они.
NT_STATUS_HOST_UNREACHABLE — сервер недоступен по сети. Тут банально пинг смотри.
Если долго подключается — возможно, проблемы с DNS или NetBIOS. Попробуй использовать IP вместо имени сервера. Или добавь опцию -m SMB2, чтобы принудительно включить более новую версию протокола.
Если вместо русских букв кракозябры — проблемы с кодировкой. Лечится так:
Bash:
smbclient//192.168.1.100/share -U username -m SMB2 -O unix ---
Полезные фишки, которые пригодятся
Есть несколько опций, которые я постоянно юзаю:
· -m SMB2 или -m SMB3 — принудительно выбрать версию протокола. Помогает, если старый SMB1 не работает.
· -O unix — включает поддержку линуксовых расширений типа симлинков.
· -d 3 — уровень отладки. Чем цифра больше, тем подробнее лог. Когда совсем непонятно, почему не работает, включаешь отладку и смотришь.
· -N — не спрашивать пароль. Для анонимного доступа.
· -W WORKGROUP — указать рабочую группу или домен.
---
smbclient или монтирование через mount
Есть два способа работать с SMB-шарами в Linux: через mount -t cifs и через smbclient.
Монтирование удобно, когда шара нужна постоянно. Ты просто примонтировал её в какую-то папку и работаешь как с обычными файлами. Можно заходить файловым менеджером, открывать документы, копировать.
smbclient удобен для разовых операций или скриптов. Быстро зашел, сделал дело, вышел. Не надо ничего монтировать, потом размонтировать, следить, чтобы не повисло.
Я юзаю оба подхода. Если шара нужна постоянно — монтирую. Если надо просто стянуть файлы или залить бекап — smbclient.
---
smbclient — это простая и надежная вещь. В ней нет никаких наворотов, графических интерфейсов и прочего, но свою работу она делает на отлично. Быстро подключиться к виндовой шаре, скачать файлы, залить данные, выполнить команду в скрипте — это её конек.
Если ты админишь Linux и хоть раз сталкивался с необходимостью забрать файлы с винды — держи smbclient под рукой. Установка занимает минуту, команды простые, результат быстрый.

