Midnight Commander Shell Link на Андроид-сервер
-
- Сообщения: 223
- Зарегистрирован: 17 июл 2017, 00:29
Долго не мог понять, почему mc-shell link не хочет соединять с андроидным ssh-сервером. Поколдовав с strace на обоих концах, понял причину: по fish-протоколу mc лезет на сервер командой /bin/sh. То есть симлинк /bin/sh->/system/bin/sh лучше создать на сервере независимо от наличия entware. От самого сервера тут вроде ничего не зависит. Если я здесь не ошибаюсь, то хотелось бы как-то это пофиксить в энтварном mc. Чтобы использовался шелл из переменной SHELL при неудаче с /bin/sh, например. Иначе какой-нибудь сервер может работать на нерутованном устройстве без возможности сделать /bin/sh. Эх... и еще бы c полурабочим sftp link как-нибудь разобраться.
-
- Администратор
- Сообщения: 1912
- Зарегистрирован: 09 авг 2015, 15:33
Действительно, в коде mc в нескольких местах жестко прошит путь /bin/sh
Заменил для fish /bin/sh на /opt/bin/sh (без проверки)
Если есть возможность - проверьте (entware-3x, armv7):
http://entware-3x.zyxmon.org/binaries/a ... mv7-3x.ipk
Если поможет, добавим проверку, есть ли /opt/bin/sh при использовании fish.
PS Проблема может быть не только тут.
Заменил для fish /bin/sh на /opt/bin/sh (без проверки)
Если есть возможность - проверьте (entware-3x, armv7):
http://entware-3x.zyxmon.org/binaries/a ... mv7-3x.ipk
Если поможет, добавим проверку, есть ли /opt/bin/sh при использовании fish.
PS Проблема может быть не только тут.
-
- Сообщения: 223
- Зарегистрирован: 17 июл 2017, 00:29
Проверил. В том смысле, что на новой версии shell link стал работать после создания /opt/bin/sh на сервере. То есть место в коде, которое вы меняете - правильное. Теперь хорошо бы туда поставить значение $SHELL или $(which sh) для лучшей совместимости с безрутовыми серверами на андроиде, таких как SSHelper и Termux-sshd.
Но и совсем менять /bin/sh на что-то иное тоже не надо. Этот путь - часть протокола. Надо попытаться дополнить его для случаев, когда /bin/sh отсутствует.
Но и совсем менять /bin/sh на что-то иное тоже не надо. Этот путь - часть протокола. Надо попытаться дополнить его для случаев, когда /bin/sh отсутствует.
-
- Администратор
- Сообщения: 1912
- Зарегистрирован: 09 авг 2015, 15:33
Давненько я не брал в руки шашек (С) не мой.
Столько строк кода (целых девять) давно не писал. забыл уже как это делается. Теперь используется значение переменной окружения SHELL. Если его нет, то /bin/sh
Проверяем - http://entware-3x.zyxmon.org/binaries/a ... mv7-3x.ipk
Надеюсь не забыл совсем программирование.
Столько строк кода (целых девять) давно не писал. забыл уже как это делается. Теперь используется значение переменной окружения SHELL. Если его нет, то /bin/sh
Проверяем - http://entware-3x.zyxmon.org/binaries/a ... mv7-3x.ipk
Надеюсь не забыл совсем программирование.
-
- Сообщения: 223
- Зарегистрирован: 17 июл 2017, 00:29
-
- Администратор
- Сообщения: 1912
- Зарегистрирован: 09 авг 2015, 15:33
-
- Сообщения: 223
- Зарегистрирован: 17 июл 2017, 00:29
Надо будет мне тоже код глянуть (сейчас я пока только на маленьких девайсах). Переменные на клиенте вообще не катят - может потребоваться соединиться как с андроидом, так и с типичным линуксом, одновременно. Разве что-только завести файл типа ~/.ssh/ssh_config со списком серверов и соответствующих шеллов и его читать.
-
- Администратор
- Сообщения: 1912
- Зарегистрирован: 09 авг 2015, 15:33
kaztost писал(а):Источник цитаты Надо будет мне тоже код глянуть
Файл src/vfs/fish/fish.c. Патч - http://entware-3x.zyxmon.org/binaries/a ... _env.patch
-
- Сообщения: 223
- Зарегистрирован: 17 июл 2017, 00:29
Вроде так работает:
Код: Выделить всё
/* argv[i++] = "echo FISH:; /bin/sh"; */
argv[i++] = "echo FISH:; $SHELL";
-
- Администратор
- Сообщения: 1912
- Зарегистрирован: 09 авг 2015, 15:33
kaztost писал(а):Источник цитаты Вроде так работает:
Элегантно. Можно даже разработчикам mc предложить. У меня (не android) по любому не работает.
Поэтому пакет для проверки http://entware-3x.zyxmon.org/binaries/a ... mv7-3x.ipk
Вернуться в «Entware на Android»
Кто сейчас на конференции
Всего 2 посетителя :: 0 зарегистрированных, 0 скрытых и 2 гостя (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (162) здесь было 16 ноя 2019, 18:33
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя