HanTengry
написал 31 марта 2009 года в 09:22 (3020 просмотров)
Ведет себя
как мужчина; открыл 36 тем в форуме, оставил 111 комментарий на сайте.
Как можно подключиться с сервера на SLES9, к удаленной машине(WinXP). Сервер должен время от времени выкладывать на удаленную папку файлы. То есть хочеться подцепить скрипт к cron-у, который копирует туда файлы. Соединяться кроме как по Samba больше никак не умею. Не представляю как это делать через bash.
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
Той же самбой, только в bash =). smbclient/smbmount тебе в помощь.
Сталкнулся с таким вопросом в пароле у меня присутствует символ «;», если вводить пароль сразу:
[user]$ /usr/sbin/smbclient //PC1/public -U user mypasswd
то говорит что неизвестная команда — указывает символы пароля за «;». Если вводить пароль не сразу [root]# smbclient -U user -L pc1, а потом при запросе то нормально подключается. Вариант смены пароля понятен, но наверно есть какие-нибудь скобки или что-то еще, для того чтобы shell воспринимал последовательность как пароль.
Кавычки обычные пробовали?
/usr/sbin/smbclient //PC1/public -U user 'my;passwd'
Кавычки то что нужно! Спасибо!
Пробую написать скрипт при запуске которого файл с данной машины копируется на удаленную.
В нем написал строчки:
smbclient //IP_host/test -U username 'passwd'
put filesuse filesuse
После отработки первой строчки на экране загорается smb: \> и вторая строчка не отрабатывает. Что нужно дописать в скрипте, как я понимаю вторая строчка уже не отрабатывается в bash? Как передать управление тому, в чем должна отрабатываться, что дописать в скрипте?
Это вам стоит почитать про UNIX shell что-нибудь фундаментальное ;-)
Следующая команда, которую вы хотите ввести, является уже не командной bash, а командой самого smbclient. Передать ее процессу с smbclient проще всего так:
(Первая команда в таком случае, естественно, уже не нужна — она «включена» в эту команду.)
Спасибо! Еще не понятно, команда put применяется только к файлам? Как копировать директории? Знаю что есть еще mput, но это тоже копирование именно файлов по маске. Знаю еще что директория в Linux это тоже файл..но не понял, что из этого следует..директория которую я пытаюсь скопировать командой put namedirectory namedirectory, не копируется.
Я вообще с smbclient особо не работал, но в разделе команд его мана есть такая вот запись:
Не оно ли?
Нашел здесь: http://linsovet.com/smbclient-upload-download-dirs
Пока не разобрался что к чему. Текст с ссылки ниже.
Копирование директорий с помощью smbclient
Часто бывает что нужно слить/залить файлы на Windows, а из SMB инструментария только smbclient. Файлы закачиваются/скачивают по аналогии с любым CLI ftp клиентом командами put/get соответственно. А вот с директориями не все так просто..
$ smbclient //win-comp-name/share
Password:
Domain=[WORKGROUP] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
smb: \> recurse
smb: \> prompt
smb: \> mget remote-dir
smb: \> mput local-dir
smb: \>
1. Первой строчкой подключаемся к удаленной Windows машине с именем win-comp-name к расшаренной папке share.
2. Вторая строчка — вводим пароль (если он есть).
3. Приглашение показывает к чему мы подсоединились.
4. Следующий строчкой командой recurse говорим что все последующие команды будут применяться рекурсивно.
5. Команда prompt отменяет запрос для каждого файла на заливку/скачивание.
6. Последующие две команды показывают как сливать и заливать директории.
то бишь для скрипта так будет:
$(echo 'recurse’; echo 'prompt’; echo 'mput DIR’) | smbclient //IP_HOST/share -u login 'passwd'
Нужно скопировать на удаленную машину не конкретную папку, это делается mput local-dir, а папку имя которой является текущем значением даты т.е. mput `date +’%d%m%Y’`. Как я понял smb:> это `date +’%d%m%Y’` не понимает. Что можно сделать, что почитать..
Мне кажется, что проще будет смонтировать шару в фс, а потом уже заниматься скриптописательством.
Еще вопрос.
Итак как я понял команда mput может видеть и брать для копирования директории только из текущего местоположения в дереве каталогов, т.е. где ты находился по дереву перед подключением к удаленной машине. Надеюсь понятно объяснил.
1. Формат команды mput local-dir, полный путь к папке как я понял указывать нельзя?
2. Если запускать команду через cron: (echo 'recurse’; echo 'prompt’; echo 'mput local-dir’) | smbclient //IP_HOST/share -u login 'passwd’, что будет являться для нее текущей директорией, в которой она будет «искать» local-dir?
напиши срипт в нем монтируй ресурс переходи в директорию и выполняй mput local-dir, патч/срипт пропиши в кроне.