14

Я пишу один сценарий. он будет работать на одной машине Linux. его цели включают в себя Linux, Solaris и Windows.

Я знаю, что могу использовать scp для копирования файлов между * nix. а как насчет копирования файла из windows?

Эти окна являются тестовыми машинами, на которых нельзя ожидать установки определенного программного обеспечения, так как ОС часто переустанавливают.

3 ответа3

19

Используйте Самбу.

Samba предоставляет сервис обмена файлами, совместимый с Windows.

Вы можете предоставить общий доступ к каталогу (например, /srv/samba/sharename) на вашем компьютере Linux и получить к нему доступ из Windows, например: \\linuxservername\sharename . Это не требует дополнительного программного обеспечения на стороне Windows.

Samba включена в большинство дистрибутивов Linux. Установите его с помощью менеджера пакетов, например:

  • Ubuntu: sudo apt-get install samba smbclient

  • SUSE: zypper samba

  • CentOS/RedHat: yum install samba

Чтобы настроить Samba, смотрите:

или поиск в Google, чтобы найти руководство для вашего дистрибутива.

Обратите внимание, что вам может потребоваться настроить брандмауэр Linux, если он используется, для приема соединений с портами 137/tcp, 138/tcp, 139/tcp и 445/tcp (см. Это и это).


В приведенном выше описании компьютер с Linux является сервером Samba, и Windows монтирует с него общий ресурс.

В своем комментарии ниже вы упоминаете, что хотите автоматизировать процесс передачи. Это может быть достигнуто путем изменения ролей, так что Windows действует как сервер, а Linux подключается к нему с помощью smbclient .

С smbclient вам вообще не нужно монтировать общий ресурс Windows. Например, чтобы получить C:\Directory\file.txt и скопировать его в /tmp на вашем компьютере с Linux, сделайте следующее:

smbclient '//windowsserver/c$' -c 'lcd /tmp; cd Directory; get file.txt' -U administrator%password

-c Команда для выполнения. Смотрите man smbclient для деталей.

-U Имя пользователя и пароль для доступа к общему ресурсу, указанному как username%password

Измените его в соответствии со своими потребностями и добавьте в свой скрипт.

2

Я знаю, что вы сказали, что не можете ожидать, что будет установлено определенное программное обеспечение, но есть клиенты SSH/SCP/SFTP для Windows, которые не требуют какой-либо конкретной установки; доступен только исполняемый файл. Я постоянно обращаюсь к PuTTY с его сопутствующими инструментами pscp и psftp , но я уверен, что альтернативы существуют. pscp и psftp могут полностью управляться из командной строки и, таким образом, хорошо подходят для задач автоматизации. У обоих из них даже есть ключ -batch который описывается как "отключить все интерактивные приглашения" и почти наверняка может быть использован.

Поскольку у вас уже есть сервер SSH/SCP/SFTP, установленный и сконфигурированный на нем, это позволяет избежать необходимости устанавливать какое-либо программное обеспечение на каждом хосте только для копирования этих файлов.

Другим положительным моментом может быть тот факт, что PuTTY является открытым исходным кодом по разрешающей лицензии, поэтому, если она не выполняет то, что вы хотите прямо из коробки, должно быть относительно легко заставить ее действовать так, как вы предпочитаете.

1

Я пользователь CentOS 6 поэтому я попробовал этот метод на CentOS 6

Установите самбу используя

[root @ server ~] # yum установить samba

Запрос на подтверждение

[root@server ~]# rpm -qa samba
samba-3.5.10-125.el6.i686

Создать пользователя Samba.

[root @ server ~] # useradd sambashare

Теперь создайте пароль samba для имени пользователя sambashare, используя команду smbpasswd.

[root@server ~]# smbpasswd -a sambashare
New SMB password:
Retype new SMB password:
Added user sambashare.

Создайте общий каталог samba

[root @ server ~] # mkdir /share

изменить владельца для общей папки

[root @ server ~] # chown -R sambashare:sambashare /share /

Откройте файл /etc/samba/smb.conf и добавьте следующие строки.

[share]
comment = Share
path = /share
writable = yes
valid users = sambashare

Запустить службу самбы

[root@server ~]# service smb restart
Shutting down SMB services:                                [  OK  ]
Starting SMB services:                                     [  OK  ]

Проверьте свою конфигурацию с помощью команды testparm

.
.
[share]
comment = share
path = /share
valid users = sambashare
read only = No

В системе Windows введите это в run

Теперь введите имя пользователя и пароль Samba

Вы сделали

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .