Ошибка ввода вывода 121

Ошибка при копировании (!)

Модератор: SLEDopit

Zloydog

Сообщения: 17
ОС: Linux Debian

Ошибка при копировании

Ситуация такая — подключился со шлюза на котором стоит Debian к самбе с помощью Midnight Commander через Shell. Стал перекидывать архивы бекапов и Midnight Commander выдает ошибки «Не возможно сменить владельца целевого файла. Ошибка удаленного вводавывода 121» и потом вторая «Невозможно сменить режим доступа целевого файла»

Сходил до сервера воткнул флешку, примонтировал и все спокойно перекинул. Но хотелось бы разобраться в чем проблема данная.

Аватара пользователя

drBatty

Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит…
ОС: Slackware-current
Контактная информация:

Re: Ошибка при копировании

Сообщение

drBatty » 12.11.2014 09:31

Zloydog писал(а): ↑

11.11.2014 17:32

Ситуация такая — подключился со шлюза на котором стоит Debian к самбе с помощью Midnight Commander через Shell. Стал перекидывать архивы бекапов

КУДА копировали?

Zloydog писал(а): ↑

11.11.2014 17:32

Но хотелось бы разобраться в чем проблема данная.

проблема в том, что какие-то атрибуты файлов в удалённой системе не поддерживаются.

Zloydog писал(а): ↑

11.11.2014 17:32

воткнул флешку

это с FAT, да? Так там никакие атрибуты не поддерживаются, только временной штамп, и то 32х битный. Вот вы их все успешно потеряли.

Hint: что-бы не потерять атрибуты(основные, такие как права доступа и владельца), используйте tar-архив для передачи, ну или rsync over ssh тоже хорошо работает.

Zloydog

Сообщения: 17
ОС: Linux Debian

Re: Ошибка при копировании

Сообщение

Zloydog » 12.11.2014 09:42

drBatty писал(а): ↑

12.11.2014 09:31

Zloydog писал(а): ↑

11.11.2014 17:32

Ситуация такая — подключился со шлюза на котором стоит Debian к самбе с помощью Midnight Commander через Shell. Стал перекидывать архивы бекапов

КУДА копировали?

Zloydog писал(а): ↑

11.11.2014 17:32

Но хотелось бы разобраться в чем проблема данная.

проблема в том, что какие-то атрибуты файлов в удалённой системе не поддерживаются.

Zloydog писал(а): ↑

11.11.2014 17:32

воткнул флешку

это с FAT, да? Так там никакие атрибуты не поддерживаются, только временной штамп, и то 32х битный. Вот вы их все успешно потеряли.

Hint: что-бы не потерять атрибуты(основные, такие как права доступа и владельца), используйте tar-архив для передачи, ну или rsync over ssh тоже хорошо работает.

Копировал с со шлюза (Debian) на Samba файлообменник (debian). Архив создал 1.tar.gz

Аватара пользователя

drBatty

Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит…
ОС: Slackware-current
Контактная информация:

Re: Ошибка при копировании

Сообщение

drBatty » 12.11.2014 10:04

Zloydog
очень плохая идея копировать файлы удалённо от/в root-доступ. Это РЕШЕТО.

Так никто не делает, потому и не тестирует никто. А если вы копируете обычным пользователем, то владелец автоматически меняется на получателя. Причём AFAIK в mc всё вроде-бы менялось без ошибок.

Ваша проблема скорее всего в том, что пользователи разные, и mc почему-то хочет сменить владельца файла на отправителя, как оно на локальной системе.

А зачем вы используете именно SMB соединение, ведь оно предназначено лишь для Windows™ систем? Нельзя-ли использовать OpenSSH?

Ещё вопрос: надеюсь вы применяете «SMB соединение», а не «FiSH»?

Zloydog

Сообщения: 17
ОС: Linux Debian

Re: Ошибка при копировании

Сообщение

Zloydog » 12.11.2014 13:45

drBatty писал(а): ↑

12.11.2014 10:04

Zloydog
очень плохая идея копировать файлы удалённо от/в root-доступ. Это РЕШЕТО.

Так никто не делает, потому и не тестирует никто. А если вы копируете обычным пользователем, то владелец автоматически меняется на получателя. Причём AFAIK в mc всё вроде-бы менялось без ошибок.

Ваша проблема скорее всего в том, что пользователи разные, и mc почему-то хочет сменить владельца файла на отправителя, как оно на локальной системе.

А зачем вы используете именно SMB соединение, ведь оно предназначено лишь для Windows™ систем? Нельзя-ли использовать OpenSSH?

Ещё вопрос: надеюсь вы применяете «SMB соединение», а не «FiSH»?

То есть перекидывать из под пользователя? Ну вообще я по SSH и так цепляюсь к серверам..Физически их нет рядом. да smb. Я пробовал менял у архива владельца и группу на те что на папку в которую скидваю тоже не хочет.. мне конечно не лень раз в неделю дойти до сервера подцепить флешку и бекап сделать, но хотелось бы автоматизировать все, чтобы он сам перекидывал бекапы на сервер самбы

Аватара пользователя

Bizdelnick

Модератор
Сообщения: 20363
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Ошибка при копировании

Сообщение

Bizdelnick » 12.11.2014 14:30

Zloydog писал(а): ↑

12.11.2014 13:45

хотелось бы автоматизировать все, чтобы он сам перекидывал бекапы на сервер самбы

Ну не через mc же бекапы будут перекидываться? Обычным cp пробовали копировать?

Пишите правильно:

в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик

Аватара пользователя

drBatty

Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит…
ОС: Slackware-current
Контактная информация:

Re: Ошибка при копировании

Сообщение

drBatty » 13.11.2014 16:20

Zloydog писал(а): ↑

12.11.2014 13:45

То есть перекидывать из под пользователя?

естественно. Для бекапов проще из под рута(хотя и опасно), НО: обязательно в простого пользователя. Этому удалённому пользователю можно назначить права write only, а также, как я их называю, «янтарные каталоги» сделать, это в ext4 атрибут append only, что-бы бекап нельзя было удалить с другой системы.

Zloydog писал(а): ↑

12.11.2014 13:45

Ну вообще я по SSH и так цепляюсь к серверам.

дык и смысл?

Zloydog писал(а): ↑

12.11.2014 13:45

но хотелось бы автоматизировать все, чтобы он сам перекидывал бекапы на сервер самбы

я не пойму: зачем вам вообще SMB и mc в данной задаче? Аж две лишних сущности.

Zloydog

Сообщения: 17
ОС: Linux Debian

Re: Ошибка при копировании

Сообщение

Zloydog » 14.11.2014 11:30

drBatty писал(а): ↑

13.11.2014 16:20

Zloydog писал(а): ↑

12.11.2014 13:45

То есть перекидывать из под пользователя?

естественно. Для бекапов проще из под рута(хотя и опасно), НО: обязательно в простого пользователя. Этому удалённому пользователю можно назначить права write only, а также, как я их называю, «янтарные каталоги» сделать, это в ext4 атрибут append only, что-бы бекап нельзя было удалить с другой системы.

Zloydog писал(а): ↑

12.11.2014 13:45

Ну вообще я по SSH и так цепляюсь к серверам.

дык и смысл?

Zloydog писал(а): ↑

12.11.2014 13:45

но хотелось бы автоматизировать все, чтобы он сам перекидывал бекапы на сервер самбы

я не пойму: зачем вам вообще SMB и mc в данной задаче? Аж две лишних сущности.

Так и пробовал кидать из под рута на пользователя..
В смысле смысл? А как еще цепляться то к серверам с винды в кабинете?) в кабинете винда стоит, а сервера в другом конце здания там Linux
Да вот решил МС попробовать чтобы удаленно скопировать, так то все время ножками до сервером и накопитель цепляю)
Или так попробовать, через «scp -r user@server1:/var/www/html/ /backup»?

Аватара пользователя

Bizdelnick

Модератор
Сообщения: 20363
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Ошибка при копировании

Сообщение

Bizdelnick » 14.11.2014 12:05

Zloydog писал(а): ↑

14.11.2014 11:30

Или так попробовать, через «scp -r user@server1:/var/www/html/ /backup»?

Да хотя бы так. Хотя лучше, конечно, rsync, если всё время в одно и то же место копируете.

Пишите правильно:

в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик

BigBrother

Сообщения: 436
Статус: ¯_(ツ)_/¯
ОС: linux based

Re: Ошибка при копировании

Сообщение

BigBrother » 23.11.2014 23:47

Zloydog писал(а): ↑

11.11.2014 17:32

Ситуация такая — подключился со шлюза на котором стоит Debian к самбе с помощью Midnight Commander через Shell. Стал перекидывать архивы бекапов и Midnight Commander выдает ошибки «Не возможно сменить владельца целевого файла. Ошибка удаленного вводавывода 121» и потом вторая «Невозможно сменить режим доступа целевого файла»

У mc есть опция «сохранять атрибуты» при копировании, попробуйте ее убрать.

I am facing problems, that pyhton throws me on my raspberry pi 3 sometimes this IOError during starting a script which is requesting data from an Arduino over I2C.

Electrical connection is perfect so this is not the issues.
Furthermore I also dont get any errors while using i2cget -y 1 0x04

Only the python scripts sucks sometime and I dont know why.

This is my Arduino Code:

I register an onReceive and an onRequestEvent.
onReceive Callback will define what kind of data should be send back to the raspberry.
onRequest Callback does the response.

    #include <CommonFunction.h>
#include <Wire.h>

#define I2C_ADDRESS 0x4

commonFunc GetCountsEverySecond;
int g_iOnRequestActionCode = 0;
unsigned long g_lSecondsSinceStart = 0;

void setup() 
{
    Wire.begin(I2C_ADDRESS);
    Wire.onRequest(sendDataOverI2CGateway);
    Wire.onReceive(defineOnRequestAction);
}


void loop() 
{
    tickSeconds();
}

void tickSeconds()
{
    if (GetCountsEverySecond.TimeTriggerAt(1000))
    {
        g_lSecondsSinceStart++;
    }
}

void sendOperationTimeDataOverI2C()
{
    unsigned long longInt = g_lSecondsSinceStart;
    byte size = sizeof(longInt);

    byte arr[size];
    for (int i = 0; i < size; i++)
    {
        int iBitShift = 8 * (size - i - 1);
        if (iBitShift >= 8)
            arr[i] = ((longInt >> iBitShift) & 0xFF);
        else
            arr[i] = (longInt & 0xFF);
    }
    Wire.write(arr, size);
    g_bI2CSending = true;
}

void sendDataOverI2CGateway()
{
    switch(g_iOnRequestActionCode)
    {
        case 0:
            sendRainDataOverI2C();
            break;
        case 1: // send firmware version
            sendVersionDataOverI2C();
            break;
        case 2: // send operation time of arduino in seconds from start
            sendOperationTimeDataOverI2C();
            break;
        default: break;
    }
}

void defineOnRequestAction(int iBuffer) 
{
    while (Wire.available())
    {
        g_iOnRequestActionCode = Wire.read();
    }
}

Here is my python Code.
Pretty straight forward but it causes some headache.

import smbus
import time
bus = smbus.SMBus(1)
while True:
        data = bus.read_i2c_block_data(0x04,0x02,4)
        result = 0
        for b in data:
                result = result * 256 + int(b)
        print(result)
        time.sleep(1)

After executing my python script I am getting sometime this error:

pi@WeatherStation:~/workspace $ sudo python readTimeOperationData.py
Traceback (most recent call last):
  File "readTimeOperationData.py", line 5, in <module>
    data = bus.read_i2c_block_data(0x04,0x02,4)
IOError: [Errno 121] Remote I/O error

Can anyone help me to fix this issue?

Cheers Dieter

Midnight Commander

При копировании через Shell link соединение в Midnight Сommander с Debian на Ubuntu, появлялась ошибка: cannot chown target file remote i/o error 121.

Такая ошибка говорит о том, что MC (а может и не он) не может перенести права на файл, на удаленную систему. Для того чтобы все же удалось скопировать, необходимо в диалоге копирования MC убрать галочку с пункта: preserve Attributes

Автор: Виталий Орлов
| Рейтинг: 4/5 |
Теги: midnight commander


Перейти к контенту

Ошибка при копировании (!)

Модератор: SLEDopit

Zloydog

Сообщения: 17
ОС: Linux Debian

Ошибка при копировании

Ситуация такая — подключился со шлюза на котором стоит Debian к самбе с помощью Midnight Commander через Shell. Стал перекидывать архивы бекапов и Midnight Commander выдает ошибки «Не возможно сменить владельца целевого файла. Ошибка удаленного вводавывода 121» и потом вторая «Невозможно сменить режим доступа целевого файла»

Сходил до сервера воткнул флешку, примонтировал и все спокойно перекинул. Но хотелось бы разобраться в чем проблема данная.

Аватара пользователя

drBatty

Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит…
ОС: Slackware-current
Контактная информация:

Re: Ошибка при копировании

Сообщение

drBatty » 12.11.2014 09:31

Zloydog писал(а): ↑

11.11.2014 17:32

Ситуация такая — подключился со шлюза на котором стоит Debian к самбе с помощью Midnight Commander через Shell. Стал перекидывать архивы бекапов

КУДА копировали?

Zloydog писал(а): ↑

11.11.2014 17:32

Но хотелось бы разобраться в чем проблема данная.

проблема в том, что какие-то атрибуты файлов в удалённой системе не поддерживаются.

Zloydog писал(а): ↑

11.11.2014 17:32

воткнул флешку

это с FAT, да? Так там никакие атрибуты не поддерживаются, только временной штамп, и то 32х битный. Вот вы их все успешно потеряли.

Hint: что-бы не потерять атрибуты(основные, такие как права доступа и владельца), используйте tar-архив для передачи, ну или rsync over ssh тоже хорошо работает.

Zloydog

Сообщения: 17
ОС: Linux Debian

Re: Ошибка при копировании

Сообщение

Zloydog » 12.11.2014 09:42

drBatty писал(а): ↑

12.11.2014 09:31

Zloydog писал(а): ↑

11.11.2014 17:32

Ситуация такая — подключился со шлюза на котором стоит Debian к самбе с помощью Midnight Commander через Shell. Стал перекидывать архивы бекапов

КУДА копировали?

Zloydog писал(а): ↑

11.11.2014 17:32

Но хотелось бы разобраться в чем проблема данная.

проблема в том, что какие-то атрибуты файлов в удалённой системе не поддерживаются.

Zloydog писал(а): ↑

11.11.2014 17:32

воткнул флешку

это с FAT, да? Так там никакие атрибуты не поддерживаются, только временной штамп, и то 32х битный. Вот вы их все успешно потеряли.

Hint: что-бы не потерять атрибуты(основные, такие как права доступа и владельца), используйте tar-архив для передачи, ну или rsync over ssh тоже хорошо работает.

Копировал с со шлюза (Debian) на Samba файлообменник (debian). Архив создал 1.tar.gz

Аватара пользователя

drBatty

Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит…
ОС: Slackware-current
Контактная информация:

Re: Ошибка при копировании

Сообщение

drBatty » 12.11.2014 10:04

Zloydog
очень плохая идея копировать файлы удалённо от/в root-доступ. Это РЕШЕТО.

Так никто не делает, потому и не тестирует никто. А если вы копируете обычным пользователем, то владелец автоматически меняется на получателя. Причём AFAIK в mc всё вроде-бы менялось без ошибок.

Ваша проблема скорее всего в том, что пользователи разные, и mc почему-то хочет сменить владельца файла на отправителя, как оно на локальной системе.

А зачем вы используете именно SMB соединение, ведь оно предназначено лишь для Windows™ систем? Нельзя-ли использовать OpenSSH?

Ещё вопрос: надеюсь вы применяете «SMB соединение», а не «FiSH»?

Zloydog

Сообщения: 17
ОС: Linux Debian

Re: Ошибка при копировании

Сообщение

Zloydog » 12.11.2014 13:45

drBatty писал(а): ↑

12.11.2014 10:04

Zloydog
очень плохая идея копировать файлы удалённо от/в root-доступ. Это РЕШЕТО.

Так никто не делает, потому и не тестирует никто. А если вы копируете обычным пользователем, то владелец автоматически меняется на получателя. Причём AFAIK в mc всё вроде-бы менялось без ошибок.

Ваша проблема скорее всего в том, что пользователи разные, и mc почему-то хочет сменить владельца файла на отправителя, как оно на локальной системе.

А зачем вы используете именно SMB соединение, ведь оно предназначено лишь для Windows™ систем? Нельзя-ли использовать OpenSSH?

Ещё вопрос: надеюсь вы применяете «SMB соединение», а не «FiSH»?

То есть перекидывать из под пользователя? Ну вообще я по SSH и так цепляюсь к серверам..Физически их нет рядом. да smb. Я пробовал менял у архива владельца и группу на те что на папку в которую скидваю тоже не хочет.. мне конечно не лень раз в неделю дойти до сервера подцепить флешку и бекап сделать, но хотелось бы автоматизировать все, чтобы он сам перекидывал бекапы на сервер самбы

Аватара пользователя

Bizdelnick

Модератор
Сообщения: 19769
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Ошибка при копировании

Сообщение

Bizdelnick » 12.11.2014 14:30

Zloydog писал(а): ↑

12.11.2014 13:45

хотелось бы автоматизировать все, чтобы он сам перекидывал бекапы на сервер самбы

Ну не через mc же бекапы будут перекидываться? Обычным cp пробовали копировать?

Пишите правильно:

в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик

Аватара пользователя

drBatty

Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит…
ОС: Slackware-current
Контактная информация:

Re: Ошибка при копировании

Сообщение

drBatty » 13.11.2014 16:20

Zloydog писал(а): ↑

12.11.2014 13:45

То есть перекидывать из под пользователя?

естественно. Для бекапов проще из под рута(хотя и опасно), НО: обязательно в простого пользователя. Этому удалённому пользователю можно назначить права write only, а также, как я их называю, «янтарные каталоги» сделать, это в ext4 атрибут append only, что-бы бекап нельзя было удалить с другой системы.

Zloydog писал(а): ↑

12.11.2014 13:45

Ну вообще я по SSH и так цепляюсь к серверам.

дык и смысл?

Zloydog писал(а): ↑

12.11.2014 13:45

но хотелось бы автоматизировать все, чтобы он сам перекидывал бекапы на сервер самбы

я не пойму: зачем вам вообще SMB и mc в данной задаче? Аж две лишних сущности.

Zloydog

Сообщения: 17
ОС: Linux Debian

Re: Ошибка при копировании

Сообщение

Zloydog » 14.11.2014 11:30

drBatty писал(а): ↑

13.11.2014 16:20

Zloydog писал(а): ↑

12.11.2014 13:45

То есть перекидывать из под пользователя?

естественно. Для бекапов проще из под рута(хотя и опасно), НО: обязательно в простого пользователя. Этому удалённому пользователю можно назначить права write only, а также, как я их называю, «янтарные каталоги» сделать, это в ext4 атрибут append only, что-бы бекап нельзя было удалить с другой системы.

Zloydog писал(а): ↑

12.11.2014 13:45

Ну вообще я по SSH и так цепляюсь к серверам.

дык и смысл?

Zloydog писал(а): ↑

12.11.2014 13:45

но хотелось бы автоматизировать все, чтобы он сам перекидывал бекапы на сервер самбы

я не пойму: зачем вам вообще SMB и mc в данной задаче? Аж две лишних сущности.

Так и пробовал кидать из под рута на пользователя..
В смысле смысл? А как еще цепляться то к серверам с винды в кабинете?) в кабинете винда стоит, а сервера в другом конце здания там Linux
Да вот решил МС попробовать чтобы удаленно скопировать, так то все время ножками до сервером и накопитель цепляю)
Или так попробовать, через «scp -r user@server1:/var/www/html/ /backup»?

Аватара пользователя

Bizdelnick

Модератор
Сообщения: 19769
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Ошибка при копировании

Сообщение

Bizdelnick » 14.11.2014 12:05

Zloydog писал(а): ↑

14.11.2014 11:30

Или так попробовать, через «scp -r user@server1:/var/www/html/ /backup»?

Да хотя бы так. Хотя лучше, конечно, rsync, если всё время в одно и то же место копируете.

Пишите правильно:

в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик

BigBrother

Сообщения: 436
Статус: ¯_(ツ)_/¯
ОС: linux based

Re: Ошибка при копировании

Сообщение

BigBrother » 23.11.2014 23:47

Zloydog писал(а): ↑

11.11.2014 17:32

Ситуация такая — подключился со шлюза на котором стоит Debian к самбе с помощью Midnight Commander через Shell. Стал перекидывать архивы бекапов и Midnight Commander выдает ошибки «Не возможно сменить владельца целевого файла. Ошибка удаленного вводавывода 121» и потом вторая «Невозможно сменить режим доступа целевого файла»

У mc есть опция «сохранять атрибуты» при копировании, попробуйте ее убрать.

1 / 1 / 0

Регистрация: 16.10.2012

Сообщений: 37

1

Ошибка при копировании

12.11.2014, 09:16. Показов 7295. Ответов 9


Ситуация такая — подключился со шлюза на котором стоит Debian к самбе с помощью Midnight Commander через Shell. Стал перекидывать архивы бекапов и Midnight Commander выдает ошибки «Не возможно сменить владельца целевого файла. Ошибка удаленного вводавывода 121» и потом вторая «Невозможно сменить режим доступа целевого файла»

Сходил до сервера воткнул флешку, примонтировал и все спокойно перекинул. Но хотелось бы разобраться в чем проблема данная.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

Эксперт по компьютерным сетямЭксперт NIX

12380 / 7220 / 757

Регистрация: 09.09.2009

Сообщений: 28,177

12.11.2014, 10:38

2

снять птицу «сохранять атрибуты»

0

1 / 1 / 0

Регистрация: 16.10.2012

Сообщений: 37

12.11.2014, 13:46

 [ТС]

3

Не вариант, пробовал, тогда он вообще не копирует. При снятой галке он не выдает ошибки но и не копирует.. то есть идет вид копирования, а в той папке пусто.

0

Эксперт по компьютерным сетямЭксперт NIX

12380 / 7220 / 757

Регистрация: 09.09.2009

Сообщений: 28,177

12.11.2014, 15:34

4

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

0

1 / 1 / 0

Регистрация: 16.10.2012

Сообщений: 37

14.11.2014, 11:22

 [ТС]

5

При снятой галке не копирует, так же наблюдаю пустую папку куда копирую

0

Модератор

Эксперт NIX

8386 / 3077 / 106

Регистрация: 24.05.2011

Сообщений: 14,223

Записей в блоге: 8

16.11.2014, 21:01

6

Zloydog, А права на целевую папку?

0

Dr_Quake

Заблокирован

17.11.2014, 06:51

7

Хм. Ну как я и предполагал… Не освоил шелл, а уже побежал софт собирать или даже писать…

0

1 / 1 / 0

Регистрация: 16.10.2012

Сообщений: 37

17.11.2014, 09:07

 [ТС]

8

права полные давал,как только не пробовал

0

Dr_Quake

Заблокирован

17.11.2014, 09:13

9

Ему не права надо, а owner’a менять. Такое может только рут в общем виде(в частных можно от себя дать кому-то, но у тебя с другой системы 99% не совпадают uid/gid). Отрубай сохранение прав и ownerов при копировании.

0

1 / 1 / 0

Регистрация: 16.10.2012

Сообщений: 37

17.11.2014, 09:21

 [ТС]

10

Не понял маленько

0

#python #raspberry-pi #gpio #i2c #smbus

Вопрос:

Я пытаюсь получить данные из i2c, но они отображаются с IOError: [Errno 121] Remote I/O error помощью . Я бы знал, какая часть пошла не так и как это исправить.

 import time
import smbus
import math

# define BMP388 Device I2C address
I2C_ADD_BMP388_AD0_LOW    =    0x76
I2C_ADD_BMP388_AD0_HIGH    =   0x77
I2C_ADD_BMP388    =        I2C_ADD_BMP388_AD0_LOW

BMP388_REG_ADD_WIA    =    0x00
BMP388_REG_VAL_WIA        =    0x50

BMP388_REG_ADD_ERR    =    0x02
BMP388_REG_VAL_FATAL_ERR    =    0x01
BMP388_REG_VAL_CMD_ERR        =    0x02
BMP388_REG_VAL_CONF_ERR        =    0x04

BMP388_REG_ADD_STATUS    =    0x03
BMP388_REG_VAL_CMD_RDY        =    0x10
BMP388_REG_VAL_DRDY_PRESS    =    0x20
BMP388_REG_VAL_DRDY_TEMP    =    0x40

BMP388_REG_ADD_CMD    =    0x7E
BMP388_REG_VAL_EXTMODE_EN    =    0x34
BMP388_REG_VAL_FIFI_FLUSH    =    0xB0
BMP388_REG_VAL_SOFT_RESET    =    0xB6

BMP388_REG_ADD_PWR_CTRL    =    0x1B
BMP388_REG_VAL_PRESS_EN        =    0x01
BMP388_REG_VAL_TEMP_EN        =    0x02
BMP388_REG_VAL_NORMAL_MODE    =    0x30

BMP388_REG_ADD_PRESS_XLSB    =    0x04
BMP388_REG_ADD_PRESS_LSB    =    0x05
BMP388_REG_ADD_PRESS_MSB    =    0x06
BMP388_REG_ADD_TEMP_XLSB    =    0x07
BMP388_REG_ADD_TEMP_LSB        =    0x08
BMP388_REG_ADD_TEMP_MSB        =    0x09

BMP388_REG_ADD_T1_LSB    =    0x31
BMP388_REG_ADD_T1_MSB    =    0x32
BMP388_REG_ADD_T2_LSB    =    0x33
BMP388_REG_ADD_T2_MSB    =    0x34
BMP388_REG_ADD_T3        =    0x35
BMP388_REG_ADD_P1_LSB    =    0x36
BMP388_REG_ADD_P1_MSB    =    0x37
BMP388_REG_ADD_P2_LSB    =    0x38
BMP388_REG_ADD_P2_MSB    =    0x39
BMP388_REG_ADD_P3        =    0x3A
BMP388_REG_ADD_P4        =    0x3B
BMP388_REG_ADD_P5_LSB    =    0x3C
BMP388_REG_ADD_P5_MSB    =    0x3D
BMP388_REG_ADD_P6_LSB    =    0x3E
BMP388_REG_ADD_P6_MSB    =    0x3F
BMP388_REG_ADD_P7        =    0x40
BMP388_REG_ADD_P8        =    0x41
BMP388_REG_ADD_P9_LSB    =    0x42
BMP388_REG_ADD_P9_MSB    =    0x43
BMP388_REG_ADD_P10        =    0x44
BMP388_REG_ADD_P11        =    0x45

class BMP388(object):
    """docstring for BMP388"""
    def __init__(self, address=I2C_ADD_BMP388):
        self._address = address
        self._bus = smbus.SMBus(1)
        # Load calibration values.
        if self._read_byte(BMP388_REG_ADD_WIA) == BMP388_REG_VAL_WIA:
            print("Pressure sersor is BMP388!rn")    
            u8RegData = self._read_byte(BMP388_REG_ADD_STATUS)
            if ( u8RegData amp; BMP388_REG_VAL_CMD_RDY ):
                self._write_byte(BMP388_REG_ADD_CMD, BMP388_REG_VAL_SOFT_RESET) 
                time.sleep(0.01)
        else:
            print("Pressure sersor NULL!rn")
        self._write_byte( BMP388_REG_ADD_PWR_CTRL,BMP388_REG_VAL_PRESS_EN | BMP388_REG_VAL_TEMP_EN | BMP388_REG_VAL_NORMAL_MODE)
        self._load_calibration()

    def _read_byte(self,cmd):
        return self._bus.read_byte_data(self._address,cmd)

    def _read_s8(self,cmd):
        result = self._read_byte(cmd)
        if result > 128:result -= 256
        return result    

    def _read_u16(self,cmd):
        LSB = self._bus.read_byte_data(self._address,cmd)
        MSB = self._bus.read_byte_data(self._address,cmd 1)
        return (MSB << 8)   LSB

    def _read_s16(self,cmd):
        result = self._read_u16(cmd)
        if result > 32767:result -= 65536
        return result

    def _write_byte(self,cmd,val):
        self._bus.write_byte_data(self._address,cmd,val)

    def _load_calibration(self):
        print("_load_calibrationrn")
        "load calibration"
        """ read the temperature calibration parameters """
        self.T1 =self._read_u16(BMP388_REG_ADD_T1_LSB)
        self.T2 =self._read_u16(BMP388_REG_ADD_T2_LSB)
        self.T3 =self._read_s8(BMP388_REG_ADD_T3)
        """ read the pressure calibration parameters """
        self.P1 =self._read_s16(BMP388_REG_ADD_P1_LSB)
        self.P2 =self._read_s16(BMP388_REG_ADD_P2_LSB)
        self.P3 =self._read_s8(BMP388_REG_ADD_P3)
        self.P4 =self._read_s8(BMP388_REG_ADD_P4)
        self.P5 =self._read_u16(BMP388_REG_ADD_P5_LSB)
        self.P6 =self._read_u16(BMP388_REG_ADD_P6_LSB)
        self.P7 =self._read_s8(BMP388_REG_ADD_P7)
        self.P8 =self._read_s8(BMP388_REG_ADD_P8)
        self.P9 =self._read_s16(BMP388_REG_ADD_P9_LSB)    
        self.P10 =self._read_s8(BMP388_REG_ADD_P10)
        self.P11=self._read_s8(BMP388_REG_ADD_P11)
    def compensate_temperature(self,adc_T):
        partial_data1 =  (adc_T - (256 *  (self.T1)))
        partial_data2 =  (self.T2 * partial_data1)
        partial_data3 =  (partial_data1 * partial_data1)
        partial_data4 =  (( partial_data3) * ( self.T3))
        partial_data5 = ( (( partial_data2) * 262144)    partial_data4)
        partial_data6 =  (( partial_data5) / 4294967296)
        self.T_fine = partial_data6
        comp_temp =  ((partial_data6 * 25)  / 16384)
        return comp_temp;

    def compensate_pressure(self,adc_P):
        partial_data1 = self.T_fine * self.T_fine
        partial_data2 = partial_data1 / 64
        partial_data3 = (partial_data2 * self.T_fine) / 256
        partial_data4 = (self.P8 * partial_data3) / 32
        partial_data5 = (self.P7 * partial_data1) * 16
        partial_data6 = (self.P6 * self.T_fine) * 4194304;
        offset =  ( (self.P5) *  140737488355328)   partial_data4   partial_data5   partial_data6

        partial_data2 = (( self.P4) * partial_data3) / 32
        partial_data4 = (self.P3 * partial_data1) * 4
        partial_data5 = ( (self.P2) - 16384) * ( self.T_fine) * 2097152
        sensitivity = (( (self.P1) - 16384) *  70368744177664)   partial_data2   partial_data4   partial_data5

        partial_data1 = (sensitivity / 16777216) * adc_P
        partial_data2 =  (self.P10) *  (self.T_fine)
        partial_data3 = partial_data2   (65536 *  (self.P9))
        partial_data4 = (partial_data3 * adc_P) / 8192
        partial_data5 = (partial_data4 * adc_P) / 512
        partial_data6 =  ( adc_P *  adc_P)
        partial_data2 = ( (self.P11) *  (partial_data6)) / 65536
        partial_data3 = (partial_data2 * adc_P) / 128
        partial_data4 = (offset / 4)   partial_data1   partial_data5   partial_data3
        comp_press = (( partial_data4 * 25) /  1099511627776)
        return comp_press;

    def get_temperature_and_pressure_and_altitude(self):
        """Returns pressure in Pa as double. Output value of "6386.2"equals 96386.2 Pa = 963.862 hPa."""
        xlsb = self._read_byte(BMP388_REG_ADD_TEMP_XLSB)
        lsb =  self._read_byte(BMP388_REG_ADD_TEMP_LSB)
        msb =  self._read_byte(BMP388_REG_ADD_TEMP_MSB)
        adc_T = (msb << 16)   (lsb << 8)   (xlsb)
        temperature = self.compensate_temperature(adc_T)
        xlsb = self._read_byte(BMP388_REG_ADD_PRESS_XLSB)
        lsb =  self._read_byte(BMP388_REG_ADD_PRESS_LSB) 
        msb =  self._read_byte(BMP388_REG_ADD_PRESS_MSB) 

        adc_P = (msb << 16)   (lsb << 8)   (xlsb)
        pressure = self.compensate_pressure(adc_P)
        altitude  = 4433000 * (1 - pow(((pressure/100.0) / 101325.0), 0.1903)) 

        return temperature,pressure,altitude

if __name__ == '__main__':
    import time
    
    print(" Test start ...n")
    
    bmp388 = BMP388()
    try:
        while True:
            time.sleep(0.5)
            temperature,pressure,altitude = bmp388.get_temperature_and_pressure_and_altitude()
            print(' Temperature = %.1f Pressure = %.2f  Altitude =%.2f '%(temperature/100.0,pressure/100.0,altitude/100.0))
    except IOError as e:
        print("IO error detected")
        print(e)
    
    except KeyboardInterrupt:
        print("End of program")
        print("ctrl   c:")
        exit()

 

Вот полная трассировка ошибок:

 python test.py 
Test start ...

Traceback (most recent call last):
  File "test.py", line 193, in <module>
    bmp388 = BMP388()
  File "test.py", line 68, in __init__
    if self._read_byte(BMP388_REG_ADD_WIA) == BMP388_REG_VAL_WIA:
  File "test.py", line 80, in _read_byte
    return self._bus.read_byte_data(self._address,cmd)
IOError: [Errno 121] Remote I/O error
 

Комментарии:

1. Эта ошибка-всего лишь общая ошибка связи. Обычно это означает «нет ответа от устройства». Правильно ли настроена ваша шина I2C? Правильный ли адрес? Что i2cdetect сообщает?

Ответ №1:

Для любого, кто узнает об этом. Я смог все исправить IOError: [Errno 121] Remote I/O error . Я использовал i2cdetect -y 1 , и он показывал устройство, но оно продолжало попадать [Errno 121] . Я перешел от использования макета к непосредственному подключению устройства. Что — то с подключением через макет испортило сигнал.

1 / 1 / 0

Регистрация: 16.10.2012

Сообщений: 37

1

Ошибка при копировании

12.11.2014, 09:16. Показов 8256. Ответов 9


Студворк — интернет-сервис помощи студентам

Ситуация такая — подключился со шлюза на котором стоит Debian к самбе с помощью Midnight Commander через Shell. Стал перекидывать архивы бекапов и Midnight Commander выдает ошибки «Не возможно сменить владельца целевого файла. Ошибка удаленного вводавывода 121» и потом вторая «Невозможно сменить режим доступа целевого файла»

Сходил до сервера воткнул флешку, примонтировал и все спокойно перекинул. Но хотелось бы разобраться в чем проблема данная.



0



Эксперт по компьютерным сетямЭксперт NIX

12712 / 7281 / 772

Регистрация: 09.09.2009

Сообщений: 28,438

12.11.2014, 10:38

2

снять птицу «сохранять атрибуты»



0



1 / 1 / 0

Регистрация: 16.10.2012

Сообщений: 37

12.11.2014, 13:46

 [ТС]

3

Не вариант, пробовал, тогда он вообще не копирует. При снятой галке он не выдает ошибки но и не копирует.. то есть идет вид копирования, а в той папке пусто.



0



Эксперт по компьютерным сетямЭксперт NIX

12712 / 7281 / 772

Регистрация: 09.09.2009

Сообщений: 28,438

12.11.2014, 15:34

4

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



0



1 / 1 / 0

Регистрация: 16.10.2012

Сообщений: 37

14.11.2014, 11:22

 [ТС]

5

При снятой галке не копирует, так же наблюдаю пустую папку куда копирую



0



Модератор

Эксперт NIX

8391 / 3145 / 106

Регистрация: 24.05.2011

Сообщений: 14,306

Записей в блоге: 8

16.11.2014, 21:01

6

Zloydog, А права на целевую папку?



0



Dr_Quake

Заблокирован

17.11.2014, 06:51

7

Хм. Ну как я и предполагал… Не освоил шелл, а уже побежал софт собирать или даже писать…



0



1 / 1 / 0

Регистрация: 16.10.2012

Сообщений: 37

17.11.2014, 09:07

 [ТС]

8

права полные давал,как только не пробовал



0



Dr_Quake

Заблокирован

17.11.2014, 09:13

9

Ему не права надо, а owner’a менять. Такое может только рут в общем виде(в частных можно от себя дать кому-то, но у тебя с другой системы 99% не совпадают uid/gid). Отрубай сохранение прав и ownerов при копировании.



0



1 / 1 / 0

Регистрация: 16.10.2012

Сообщений: 37

17.11.2014, 09:21

 [ТС]

10

Не понял маленько



0



  • Ошибка ввода вывода на usb флешке
  • Ошибка ввода вывода 0хс000009с
  • Ошибка ввода вывода на ssd как исправить невозможно инициализировать диск
  • Ошибка ввода вывода 0х8007045d
  • Ошибка ввода вывода диск не проинициализирован что делать