LINUX.ORG.RU

Сообщения constant_arapov

 

Монтирование диска на конкретном SATA порту

Задача. Есть файл сервер с 16 SATA дисками, подключенных через плату SATA контроллера. Роль сервера – хранение архивных файлов. Т.е. к SATA порту 1 подключается диск и на этот диск скидываются данные типа A. После того, как диск заполнится, диск «на горячую» меняется. К этому же SATA порту подключается другой, чистый диск, и туда опять скидываются данные типа A.

Проблема в следующем. В линукс системах имеется система именования дисков sda, sdb… и т.д. НО. Порядок соответствия дисков и портов определяется ОС. Т.е., даже при первой инициализации не факт, что, будет маппинг: sda => sata_port_1, sdb=> sata_port_2… А нам необходимы некие «жесткие точки» монтирования, что ли. Т.е. в скрипте, пишем, что копируем в каталог dir_A, и этому каталогу соответствует диск, который подключен к SATA порту 1. Как нам решить эту проблему ?

 , , ,

constant_arapov
()

CentOS 6.4 «не видит» 3G модем

Помогите пожалуйста.

ОС CentOS 6.4 x64 не «видит» модем E173 HUAWEI. В «NetManager» не отображается.

constant_arapov
()

доступ к веб серверу в локальной сети извне


Во внутренней локальной сети имеется веб-сервер, доступ к которому должны иметь как пользователи извне (Интернет), так и из локальной сети.
На opennet.ru, в руководстве по айпитейблес http://www.opennet.ru/docs/RUS/iptables/ , дивно описано, как разрешить эту ситуацию, я понял, что нужно сделать, понял как это все ДОЛЖНО РАБОТАТЬ.

Следуя этим инструкциям я сделал так:


iptables -t nat -A PREROUTING --dst $INET_IP -p tcp --dport 80 -j DNAT --to-destination $WEB_SERVER

iptables -t nat -A POSTROUTING --dst $WEB_SERVER -p tcp --dport 80 -j SNAT --to-source $LANSERV_IP

iptables -t nat -A OUTPUT --dst $INET_IP -p tcp --dport 80 -j DNAT --to-destination $WEB_SERVER


Но это НЕ РАБОТАЕТ ! Из-за чего это может быть.Что можно еще попробовать ?

constant_arapov
()

очереди сообщений ipcs premission denied

Программа должна принимать ipcs сообщения.
Ниже представлен участок кода, отвечающий
за создание новой очереди с пом. msgget
и принятие сообщения с пом. msgrcv


#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>

#include <errno.h>


struct msgform
{
long mtype;
char mtext[10];


}msg,msg2;



int msgid;
int main()
{



int i,pid,*pint;







key_t key=ftok("./msg_server.c",1);
msgid=msgget(key,IPC_CREAT );
//printf(strerror(errno));
printf("msgid= %d\n",msgid);




{

int rcv_id=msgrcv(msgid,&msg,sizeof(msg.mtext),1,0);
printf(strerror(errno));
printf("\nrcv_id=%d\n",rcv_id);




char cmd[50];




strcpy(cmd,"echo");

strcat(cmd," ");

strcat(cmd,msg.mtext);
system(cmd);









}





return 0;
}


}

Когда прога выполняется под root, все работает так как надо.
Когда же я выполняю прогу под дкугим пользователем (lamer),
прога выдает результат.

msgid= 98307
Permission denied
rcv_id=-1


Т.е. как я понял создает очередь, но не читает из нее.
Комманда ipcs выполненная под root выдает:

----- Message Queues --------
key msqid owner perms used-bytes messages
0x0105cd28 0 root 644 0 0
0x0105cd17 32769 root 0 0 0
0x0105cd33 65538 lamer 0 0 0
0x0105cd29 98307 lamer 0 0 0

А если выполнить ipcs под lamer:

key msqid owner perms used-bytes messages
0x0105cd28 0 root 644 0 0

В общем, как я понял на очереди сообщения налагаются определенные права доступа. Но ведь lamer создал сообщение ! Он его владелец !
Почему он не может получать елементы очереди ? Что нужно сделать, чтобы lamer мог получать их ?
Объяаните мне люди умные, плиз.






constant_arapov
()

ipc+system=мистика ?

Два процесса обмениваются сообщениями по ipc.


Запускается несколько процессов-клиентов, помещаюшие сообщения
в очередь, такого вида:


#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>

#define MSGKEY 11111

struct msgform {
long mtype;
char mtext[10];

};

int main(int argc,char *argv[])
{

if (argc<2)
{
printf("You must, input ASIN, man !\n");
return 1;

}
struct msgform msg;
int msgid,pid,*pint;
key_t key=ftok("./",1);
msgid = msgget(key,0777);

printf("%d",msgid );

strcpy(msg.mtext,*(++argv));
printf("%s\n",msg.mtext);
pid=getpid();


msg.mtype=1;

msgsnd(msgid,&msg,sizeof(msg.mtext),0);
return 0;
}


//-------------------------------------------------------------------



Эти сообщения получает процесс сервер. Он запускает внешнюю комманду
(скрипт PHP) и передает в нее полученное сообщение. Процесс сервер:


#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <stdio.h>
#include <errno.h>


struct msgform
{
long mtype;
char mtext[10];


}msg,msg2;
int msgid;
int main()
{



int i,pid,*pint;
extern cleanup();

for (i=0;i<20;i++)
signal(i,cleanup);

key_t key=ftok("./",1);
msgid=msgget(key,IPC_CREAT);

for(;;)


{

msgrcv(msgid,&msg,sizeof(msg.mtext),1,0);
char cmd[50];



strcpy(cmd,"./updater.php5");
strcat(cmd," ");
strcat(cmd,msg.mtext);

system(cmd);






}





return 0;
}
cleanup()
{
msgctl(msgid,IPC_RMID,0);
exit(0);

}

А теперь вопрос знатокам. Какого ..... программа прерывается сразу после первого запуска system (т.е. внешняя комманда выполняется, но только один раз) ? Если не использовать system, то все будет работать. Как только я запускаю ЛЮБУЮ комманду с пом. system
в цикле, все слетает: цикл прерывается, программа завершает работу.









constant_arapov
()

ftok+msgget

Пытаюсь сгенерировать ключ c пом. ftok и создать очередь сообщений

#include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h>

int main() {

int msgid; char *pathname="./key"; char proj='a'; int key=ftok(pathname,proj); msgid = msgget(key,0777);

printf("%d",msgid );

return 0; }

Печатает -1. Т. е. очередь не создана. Почему ?

constant_arapov
()

iptables + восприятие DNS -имен

Может такой сабж уже и был где-то, но я его ненашел в рунете, по-крайней мере. Суть проблеммы: стоит настроенный как надо iptables, но работает он по IP-адресам. Сейчас переходим на DHCP, т.е. соответственно нужно что-бы iptables понимал DNS-имена. Чего он НЕ делает. Как решить эту проблемму ?

constant_arapov
()

RSS подписка на новые темы