доступ к ресурсам с помощью С++

Модератор: Fastman

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Гость
проходил мимо

доступ к ресурсам с помощью С++

Непрочитанное сообщение Гость » 2010-12-07 8:06:03

Подскажите каким образом использую С++ можно поиметь доступ к шаре? Сейчас используются скрипты на csh , но есть моменты когда они не весь ф-ционал выполняют.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Dambo
ефрейтор
Сообщения: 61
Зарегистрирован: 2009-11-27 22:29:58

Re: доступ к ресурсам с помощью С++

Непрочитанное сообщение Dambo » 2010-12-07 18:53:57

А какие проблемы?
Единственное в путь надо дописывать лишении '\'
к примеру "\\serv\mydir\text.txt" запись идёт в путь "\\\\serv\\mydir\\text.txt"

Гость
проходил мимо

Re: доступ к ресурсам с помощью С++

Непрочитанное сообщение Гость » 2010-12-09 7:26:59

Dambo писал(а):А какие проблемы?
Единственное в путь надо дописывать лишении '\'
к примеру "\\serv\mydir\text.txt" запись идёт в путь "\\\\serv\\mydir\\text.txt"
а как быть с авторизацией?

Dambo
ефрейтор
Сообщения: 61
Зарегистрирован: 2009-11-27 22:29:58

Re: доступ к ресурсам с помощью С++

Непрочитанное сообщение Dambo » 2010-12-09 16:48:45

А под какой ОС вы пишите?
Это определяется в API всё таки... в винде CreateFile есть параметр секури и моде...

Гость
проходил мимо

Re: доступ к ресурсам с помощью С++

Непрочитанное сообщение Гость » 2010-12-10 9:36:11

Dambo писал(а):А под какой ОС вы пишите?
Это определяется в API всё таки... в винде CreateFile есть параметр секури и моде...

под FreeBSD. Сейчас шары подключаю через SMBCLIENT (sh), но там нет гарантии на успешное копирование, т.е. конструкция:

Код: Выделить всё


if  smbclient -U $obmenname $obmen $obmenpass -c "cd in;lcd /fs/ARM1/IN;prompt;mput *"
then echo "YES"
else echo "NO"
fi

не дает гарантии на выполнение mput . "Примапливание" шары уже даст результат "YES", a mput может и не отработать. Может вы знаете как можно гарантированно решить данную проблему в шелле?

Гость
проходил мимо

Re: доступ к ресурсам с помощью С++

Непрочитанное сообщение Гость » 2010-12-10 9:40:09

что значит примапливание может пройти
а mput может не отработать
разложите по частям и докопайтесь до истины

вас бы устроил диагноз в больнице "што то где то болит"
?

Гость
проходил мимо

Re: доступ к ресурсам с помощью С++

Непрочитанное сообщение Гость » 2010-12-10 9:56:05

Гость писал(а):что значит примапливание может пройти
а mput может не отработать
разложите по частям и докопайтесь до истины
?
Вообщем, если выполнится

Код: Выделить всё

smbclient -U $obmenname $obmen $obmenpass
это уже будет успех и отработает "YES"(проверенно), пакетная часть

Код: Выделить всё

-c "cd in;lcd /fs/ARM1/IN;prompt;mput *"
может отработать с ошибками(копирование не удалось по причине изменения политики безопасности) и все равно отработает ветка "YES"
Гость писал(а): вас бы устроил диагноз в больнице "што то где то болит"
?

ну тут как раз вы как врач...и дали именно такой ответ

Гость
проходил мимо

Re: доступ к ресурсам с помощью С++

Непрочитанное сообщение Гость » 2010-12-10 10:00:27

разбить все на два этапа
smbclient монтирует
а потом уже другим действием игратся с mput
если ошибка итд то крутить по кругу
но шара то уже будет примонтирована

-c я ж так понимаю параметр действия после монтирования?
и у смонтированой шары надеюсь приколов типа что то сменилось нет?
шары статически расшарены и не меняются?
тогда все так как я описал вначале

Гость
проходил мимо

Re: доступ к ресурсам с помощью С++

Непрочитанное сообщение Гость » 2010-12-10 10:11:48

вот код:

Код: Выделить всё

#!/bin/sh



obmen="//10.96.7.5/obmen"
obmenname="COPER"
obmenpass="18ko0q%"

........................................................................................

if  smbclient -U $obmenname $obmen $obmenpass -c "cd in;lcd /fs/ARM1/IN;prompt;mput *"
then echo "YES"
else echo "NO"
fi
.........................................................................................
Гость писал(а):разбить все на два этапа
smbclient монтирует
а потом уже другим действием игратся с mput
если ошибка итд то крутить по кругу
но шара то уже будет примонтирована
Так там же нет как такового монтирования, т.е. точки монтирования нет...копирование идет по сетевому пути, разбить на 2 этапа не удастся.
Гость писал(а): -c я ж так понимаю параметр действия после монтирования?
и у смонтированой шары надеюсь приколов типа что то сменилось нет?
шары статически расшарены и не меняются?
тогда все так как я описал вначале
Шара не наша(случай был ... поэтому и вся эта песня)

Dambo
ефрейтор
Сообщения: 61
Зарегистрирован: 2009-11-27 22:29:58

Re: доступ к ресурсам с помощью С++

Непрочитанное сообщение Dambo » 2010-12-10 16:44:02

Гость писал(а):Подскажите каким образом использую С++ можно поиметь доступ к шаре? Сейчас используются скрипты на csh , но есть моменты когда они не весь ф-ционал выполняют.
http://ru.wikipedia.org/wiki/SMB
http://blogs.technet.com/b/josebda/arch ... ndows.aspx
http://msdn.microsoft.com/en-us/library/cc212614.aspx

Или читаться сорцы самба

Dambo
ефрейтор
Сообщения: 61
Зарегистрирован: 2009-11-27 22:29:58

Re: доступ к ресурсам с помощью С++

Непрочитанное сообщение Dambo » 2010-12-10 17:04:28

в msdn со студией минимум информации о smb...
Microsoft SMB Protocol Packet Exchange Scenario
This topic gives an example of a Microsoft SMB Protocol packet exchange between a client and a server. The following steps are an overview of the process:

The client and server establish a NetBIOS session.
The client and server negotiate the Microsoft SMB Protocol dialect.
The client logs on to the server.
The client connects to a share on the server.
The client opens a file on the share.
The client reads from the file.
First, a full-duplex TCP connection is established by the client with the server. Then the client builds and sends a NetBIOS session request packet over the TCP connection. If the packet was formatted correctly, the server then returns a packet that contains a message acknowledging that the session has been established. After this, the client sends the first Microsoft SMB Protocol packets to the server.

Packet 1: SMB_COM_NEGOTIATE
Direction: Client to server
Description: The client requests that the server negotiate the Microsoft SMB Protocol dialect. A list of strings identifying the dialects that the client can work with is included in the packet.
Packet 2: SMB_COM_NEGOTIATE
Direction: Server to client
Description: The server responds to the client's request to identifythe Microsoft SMB Protocol dialect that is going to be used in the session. The returned packet also includes an 8-byte random string that will be used in the next step to authenticate the client during the logon process.
Packet 3: SMB_COM_SESSION_SETUP_ANDX
Direction: Client to server
Description: This packet includes information about client capabilities, so this packet must be sent even if the server has implemented only share-level security.
Packet 3: SMB_COM_SESSION_SETUP_ANDX
Direction: Server to client
Description: If the challenge/response is accepted by the server, a valid UID is included in the packet that is returned to the client. If it is not accepted, the server will return an error code in this packet and deny access.
Packet 4: SMB_COM_TREE_CONNECT_ANDX
Direction: Client to server
Description: The client requests access to the share. The packet contains the fully specified path of the share in UNC format.
Packet 5: SMB_COM_TREE_CONNECT_ANDX
Direction: Server to client
Description: If access to the share is granted, then the server returns the 16-bit tree ID (TID) that corresponds to the share in this packet. If the share does not exist or the user has insufficient credentials to access the share, the server will return an error code in this packet and deny access to the share.
Packet 6: SMB_COM_OPEN_ANDX
Direction: Client to server
Description: The client requests the server to open a file on the accessed share on behalf of the client. This packet contains the name of the file to be opened.
Packet 7: SMB_COM_OPEN_ANDX
Direction: Server to client
Description: If access to the file is granted, then the server returns the file ID of the requested file. If the file does not exist or the user has insufficient credentials to access the file, the server will return an error code in this packet and deny access to the file.
Packet 8: SMB_COM_READ_ANDX
Direction: Client to server
Description: The client requests the server to read data from the opened file on behalf of the client and return this data to the client. The file ID that is obtained by the client when the file was opened is included in this packet in order to identify which opened file the server should read data from.
Packet 9: SMB_COM_READ_ANDX
Direction: Server to client
Description: The server returns the requested file data in this packet. An error here is unlikely given that access to the server, share, and file has been granted. It can happen in some situations, however: for example, if access to a share is changed between the time the file is opened and the time it is read from.

Гость
проходил мимо

Re: доступ к ресурсам с помощью С++

Непрочитанное сообщение Гость » 2010-12-14 9:09:12

Dambo писал(а):в msdn со студией минимум информации о smb...
Может существует библиотека для работы c ресурсами самбы? Если владеете данной информацией - подскажите.


Аватара пользователя
itux
мл. сержант
Сообщения: 114
Зарегистрирован: 2008-11-09 12:37:55
Откуда: Kemerovo
Контактная информация:

Re: доступ к ресурсам с помощью С++

Непрочитанное сообщение itux » 2012-11-14 6:07:10

#!/bin/sh



obmen="//10.96.7.5/obmen"
obmenname="COPER"
obmenpass="18ko0q%"

........................................................................................

if smbclient -U $obmenname $obmen $obmenpass -c "cd in;lcd /fs/ARM1/IN;prompt;mput *"
then echo "YES"
else echo "NO"
fi
.........................................................................................
Это же не Си++ :)
несу чушь, не дорого... звонить +7903.......