Можно ли запустить команду bash из Windows через соединение samba?

Теперь, прежде чем вы закончите думать: «Дорогой Бог! Почему ты хочешь это допустить?!?», Мне интересно, возможно ли это.

То, что я пытаюсь решить, может быть решено другими способами, но это помещает это в функциональную сферу других, не * nix-y администраторов на моем рабочем месте.

Чего я хочу добиться: иметь ярлык / файл / что-у-у-вас, чтобы можно было дважды щелкнуть (запустить его) по соединению samba и выполнить umount /path/to/ext-drive .

Это может упасть на его лицо во многих областях, одной из которых, конечно, было упомянутое выше «Почему? !!?!», И я только что вспомнил, что монтирование выполняется через cron root, поэтому он может даже не быть размонтирован через какого-то другого имени пользователя smb.

На практике я имею в виду ссылку на файл .sh вне общих папок, пытаясь изолировать что-либо с помощью execute от пользовательской самоделки.

Какие-нибудь мысли?

редактировать

Я должен добавить, что USB доп. диск монтируется через скрипт, который выполняет резервное копирование. Он не установлен при подключении диска. Надеюсь, это был способ обойти случайно возникающие сбои, которые возникли в последние несколько недель.

Я также подумал, что мог бы поместить что-то в cron, чтобы проверить, прекратился ли процесс резервного копирования, если диск все еще подключен, и если это так – размонтируйте его.

другое редактирование

Я начинаю понимать бесполезность этого вопроса. Как я уже сказал в комментариях ниже ОП здесь, двойной щелчок файла на общем ресурсе с моего компьютера не будет выполнять что-либо на сервере.

Решение проблемы, а не вопрос

Я собираюсь принять ответ от @slm, так как это ответ на заданный вопрос. “Можно ли запустить команду bash из Windows через соединение samba?” Нет, ты не можешь. (как отмечено в комментариях ниже этого ОП тоже)

Но чтобы решить проблему, я сделал это – и буду запускать его через cron каждый час.

 #!/bin/bash if [ ! -f "/path/to/locking/file.txt" ] then if mount | grep /pathTo/backupDriveMount ; then # Is still Mounted echo "Drive Still Mounted - Attemping unmount" >> "/path2/logFile.log" TEST="$(mount | grep /pathTo/backupDriveMount | cut -d' ' -f1)" echo "Unmounting ${TEST}" umount ${TEST} fi fi 

По-английски,

  1. если файл блокировки не существует, то проверьте в монтировках путь к резервной точке монтирования.
  2. Если это там, извлеките диск / раздел
  3. Размонтировать извлеченное место.

Это невозможно. Вы не можете запустить исполняемый файл на сервере Linux таким способом через соединение Samba.

Если вы действительно хотите достичь чего-то подобного, вы можете достичь этого только одним из двух способов:

  1. Путем удаленного выполнения команды через PuTTY / SSH, эффективного входа в систему в окне Linux, запуска команды и выхода.

     $ ssh linux-server umount /path/to/ext-drive 
  2. Настроив исполняемый файл, который может быть запущен через веб-сервер, где они будут запускать команду umount /path/to/ext-drive через тип установки CGI-BIN.

ПРИМЕЧАНИЕ . Второй вариант, описанный выше, можно считать «опасным», и я, вероятно, отговаривал бы его использовать кого-либо, но в прошлом я использовал его для предоставления некоторых основных команд, которые я хотел выполнить удаленно, и SSHing в поле был не вариант.

Другой подход

Лучшей альтернативой может быть использование автомонтирования на сервере Linux. С автомонтировщиком, каждый раз, когда кто-то пытается получить доступ к каталогу, может быть запущено действие для монтирования данного раздела в пространство каталогов сервера Linux. По истечении заданного времени бездействия автоматически подключаемый каталог можно отключить автоматически с помощью автоматического монтирования.

Посмотрите на некоторые из этих руководств для получения дополнительной информации о настройке автомонтирования: