The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на рабочей станции (icewm, xfce... / Linux)
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

bash скрипт для монтирования андроид телефона, Isothiocyanate (ok), 11-Янв-21, (0) [смотреть все] –1

Сообщения [Сортировка по времени | RSS]


10. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от Isothiocyanate (ok), 12-Янв-21, 20:51 
#!/bin/bash
echo "This script will mount yors Android phone using go-mtpfs."
echo " Firstly install go-mtpfs, MTP protocol, then make dir called AndroidDevice in yours /home/user_name catalog."
echo " Make dir AndroidDevice in yours home catalog? Yes=1 No=2"
read D
if [[ "D" = "1" ]]  
then
mkdir ~/AndroidDevice
echo "mount point is created."
else
go-mtpfs ~/AndroidDevice &
# Note: If go-mtpfs is not ran in the background (with & at the end), another console will be needed to browse the device and unmount the device (when finished).
echo "Device is mounted."
fi
echo "Do you wish unmount it? Yes=press any key"
read B
fusermount -u ~/AndroidDevice
echo " Unmount is Ok."
#When the device is unmount, go-mtpfs will quit.

Теперь работает как надо.
rost@DEBIAN999:~/Mount_Android_Phone$ ./Android_mount_script2
This script will mount yors Android phone using go-mtpfs.
Firstly install go-mtpfs, MTP protocol, then make dir called AndroidDevice in yours /home/user_name catalog.
Make dir AndroidDevice in yours home catalog? Yes=1 No=2
2
Device is mounted.
Do you wish unmount it? Yes=press any key
2021/01/12 19:47:27 FUSE mounted
l
Unmount is Ok.
rost@DEBIAN999:~/Mount_Android_Phone$

Позже я попробую сделать автомтическую проверку на наличие директории монтирования и создании таковой если ее нет.

Хотя нет, мне же надо сравнить числа а не строки:

#!/bin/bash
echo "This script will mount yors Android phone using go-mtpfs."
echo " Firstly install go-mtpfs, MTP protocol, then make dir called AndroidDevice in yours /home/user_name catalog."
echo " Make dir AndroidDevice in yours home catalog? Yes=1 No=2"
read D
if [[ "$D" -eq 1 ]]  
then
mkdir ~/AndroidDevice
echo "mount point is created."
else
go-mtpfs ~/AndroidDevice &
# Note: If go-mtpfs is not ran in the background (with & at the end), another console will be needed to browse the device and unmount the device (when finished).
echo "Device is mounted."
fi
echo "Do you wish unmount it? Yes=press any key"
read B
fusermount -u ~/AndroidDevice
echo " Unmount is Ok."
#When the device is unmount, go-mtpfs will quit.

Выхлоп:
rost@DEBIAN999:~/Mount_Android_Phone$ ./Android_mount_script2
This script will mount yors Android phone using go-mtpfs.
Firstly install go-mtpfs, MTP protocol, then make dir called AndroidDevice in yours /home/user_name catalog.
Make dir AndroidDevice in yours home catalog? Yes=1 No=2
2
Device is mounted.
Do you wish unmount it? Yes=press any key
2021/01/12 19:55:18 FUSE mounted
f
Unmount is Ok.
rost@DEBIAN999:~/Mount_Android_Phone$ ./Android_mount_script2
This script will mount yors Android phone using go-mtpfs.
Firstly install go-mtpfs, MTP protocol, then make dir called AndroidDevice in yours /home/user_name catalog.
Make dir AndroidDevice in yours home catalog? Yes=1 No=2
1
mkdir: cannot create directory ‘/home/rost/AndroidDevice’: File exists
mount point is created.
Do you wish unmount it? Yes=press any key
e
fusermount: entry for /home/rost/AndroidDevice not found in /etc/mtab
Unmount is Ok.
rost@DEBIAN999:~/Mount_Android_Phone$

Ответить | Правка | К родителю #5 | Наверх | Cообщить модератору

11. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от DiabloPC (ok), 14-Янв-21, 23:30 
> echo " Firstly install go-mtpfs, MTP protocol, then make dir called AndroidDevice
> in yours /home/user_name catalog."

Зачем каждый раз это выводить?
Делаем проверку наличия go-mtpfs - если его нету выводим сообщение и прерываем работу скрипта:

...
IsGomtpfsPresent=$(which go-mtpfs &>/dev/null; echo $?)
if ! [ "$IsGomtpfsPresent" == '0' ]
    then
        echo -e "Go-mtpfs not installed. \nPlease, install it for use this script"
        exit 1
fi
...

> echo " Make dir AndroidDevice in yours home catalog? Yes 1/No 2"
> read D
> if [[ "$D" -eq 1 ]]
> then
> mkdir ~/AndroidDevice
> echo "mount point is created."
> else
> go-mtpfs ~/AndroidDevice &

А здесь вообще ничерта не понял:
в таком варианте, после создания каталога оно ничерта не смонтирует, т.к. монтирование в противоположном условии:

Если [[ответ=="да]]
    создать каталог
если ответ равен любому другому значению
    выполнить монтирование.

Правильно будет вот так:

...
echo 'Make dir AndroidDevice in your home catalog? [Y]es/[N]o'
read ANS
if [[ $ANS == "Y" || $ANS = "y" || $ANS == "Yes" || $ANS == "yes" ]]
    then
        mkdir $HOME/AndroidDevice
fi

go-mtpfs bla-bla-bla
...


Ответить | Правка | Наверх | Cообщить модератору

12. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от DiabloPC_пробегалemail (?), 15-Янв-21, 00:40 
А еще правильнее вот так:
...
if ! [ -d $HOME/AndroidDevice ]
    echo 'Make dir AndroidDevice in your home catalog? [Y]es/[N]o'
    read ANS
    if [[ $ANS == "Y" || $ANS == "y" || $ANS == "Yes" || $ANS == "yes" ]]
        then
            mkdir $HOME/AndroidDevice
        else
            echo -e "Mount point does not exist. \nCan't Mount. "
            exit 2
    fi
fi
go-mtpfs bla-bla-bla
...


Ответить | Правка | Наверх | Cообщить модератору

13. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от Isothiocyanate (ok), 15-Янв-21, 15:26 
Спасибо, перепишу его.


Ответить | Правка | Наверх | Cообщить модератору

14. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от Isothiocyanate (ok), 15-Янв-21, 16:55 

>     if [[ $ANS == "Y" || $ANS ==
> "y" || $ANS == "Yes" || $ANS == "yes" ]]
>         then

DiabloPC, а где ты взял эту конструкцию с == ?        

Ответить | Правка | К родителю #12 | Наверх | Cообщить модератору

15. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от DiabloPC_пробегалemail (?), 15-Янв-21, 19:47 
>>     if [[ $ANS == "Y" || $ANS ==
>> "y" || $ANS == "Yes" || $ANS == "yes" ]]
>>         then
> DiabloPC, а где ты взял эту конструкцию с == ?

Просто написал от руки.  
|| это логическое (ИЛИ)

Ответить | Правка | Наверх | Cообщить модератору

16. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от Isothiocyanate (ok), 15-Янв-21, 23:51 
#!/bin/bash
echo "This script will mount yors Android phone using go-mtpfs."
echo " Firstly install go-mtpfs, MTP protocol, then make dir called AndroidDevice in yours /home/user_name catalog."
IsGomtpfsPresent=$(which go-mtpfs &>/dev/null; echo $?)
if ! [ "$IsGomtpfsPresent" == '0' ]
    then
        echo -e "Go-mtpfs not installed. Please, install it for use this script"
        exit 1
fi

if [ -d $HOME/AndroidDevice ]
    then
    ANS=A
    echo "Mount point exist."
    else
    echo "Make dir AndroidDevice in your home catalog? [Y]es/[N]o"
    read ANS
fi
    
if [[ $ANS == "Y" || $ANS == "y" || $ANS == "Yes" || $ANS == "yes" ]]
        then
            mkdir $HOME/AndroidDevice
            echo "Mount point is created."
fi

if [[ $ANS == "N" || $ANS == "n" || $ANS == "No" || $ANS == "no" ]]
        then
            echo -e "We do not create mount point."
        exit 2
fi

go-mtpfs ~/AndroidDevice &
# Note: If go-mtpfs is not ran in the background (with & at the end), another console will be needed to browse the device and unmount the device (when finished).
echo "Device is mounted."
echo "Do you wish unmount it? Yes=press Y key"
read B
fusermount -u ~/AndroidDevice
echo " Unmount is Ok."
# When the device is unmount, go-mtpfs will quit.
exit 3

Как-то так.

Ответить | Правка | Наверх | Cообщить модератору

17. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от Isothiocyanate (ok), 15-Янв-21, 23:52 
rost@DEBIAN999:~/Mount_Android_Phone$ ./Android_mount_script4
This script will mount yors Android phone using go-mtpfs.
Firstly install go-mtpfs, MTP protocol, then make dir called AndroidDevice in yours /home/user_name catalog.
Mount point exist.
Device is mounted.
Do you wish unmount it? Yes=press Y key
2021/01/15 22:45:12 FUSE mounted
y
Unmount is Ok.
rost@DEBIAN999:~/Mount_Android_Phone$ ./Android_mount_script4
This script will mount yors Android phone using go-mtpfs.
Firstly install go-mtpfs, MTP protocol, then make dir called AndroidDevice in yours /home/user_name catalog.
Make dir AndroidDevice in your home catalog? [Y]es/[N]o
y
Mount point is created.
Device is mounted.
Do you wish unmount it? Yes=press Y key
2021/01/15 22:45:55 FUSE mounted
y
Unmount is Ok.
rost@DEBIAN999:~/Mount_Android_Phone$ ./Android_mount_script4
This script will mount yors Android phone using go-mtpfs.
Firstly install go-mtpfs, MTP protocol, then make dir called AndroidDevice in yours /home/user_name catalog.
Mount point exist.
Device is mounted.
Do you wish unmount it? Yes=press Y key
2021/01/15 22:46:24 FUSE mounted
y
Unmount is Ok.
rost@DEBIAN999:~/Mount_Android_Phone$ ./Android_mount_script4
This script will mount yors Android phone using go-mtpfs.
Firstly install go-mtpfs, MTP protocol, then make dir called AndroidDevice in yours /home/user_name catalog.
Make dir AndroidDevice in your home catalog? [Y]es/[N]o
n
We do not create mount point.
rost@DEBIAN999:~/Mount_Android_Phone$
rost@DEBIAN999:~/Mount_Android_Phone$ ./Android_mount_script4
This script will mount yors Android phone using go-mtpfs.
Firstly install go-mtpfs, MTP protocol, then make dir called AndroidDevice in yours /home/user_name catalog.
Go-mtpfs not installed. Please, install it for use this script
rost@DEBIAN999:~/Mount_Android_Phone$
Ответить | Правка | Наверх | Cообщить модератору

18. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от DiabloPC (ok), 16-Янв-21, 04:01 
#!/bin/bash

echo -e "This script will mount your Android phone using go-mtpfs.\n\n"
echo "First install go-mtpfs, MTP protocol, then make dir called AndroidDevice in your /home/user_name catalog." ## Учитуя наличие следующих шести строк, которые выведут предупреждение, если это потребуется, эта строка ненужна.
IsGomtpfsPresent=$(which go-mtpfs &>/dev/null; echo $?)
if ! [ "$IsGomtpfsPresent" == '0' ]
    then
        echo -e "Go-mtpfs not installed. Please, install it for use this script"
        exit 1
fi

if [ -d $HOME/AndroidDevice ]
    then
        ANS=A  ## Не вкурил: что это?? Зачем?
        echo "Mount point exist."
    else
        echo "Make dir AndroidDevice in your home catalog? [Y]es/[N]o"
        read ANS
fi
    
## следующие две проверки условий нелогично выносить из предыдущей конструкции if-then-else, т.к. если выполнилось условие предыдущей проверки то они не нужны вообще.
## if [[ $ANS == "Y" || $ANS == "y" || $ANS == "Yes" || $ANS == "yes" ]]
##     then
##         mkdir $HOME/AndroidDevice
##         echo "Mount point is created."
## fi
##
## if [[ $ANS == "N" || $ANS == "n" || $ANS == "No" || $ANS == "no" ]]
##     then
##         echo -e "We do not create mount point."
##         exit 2
## fi

## Получаем вот такое:

if [ -d $HOME/AndroidDevice ]
    then
        ANS=A  ## Не вкурил: что это?? Зачем?
        echo "Mount point exist."
    else
        echo "Make dir AndroidDevice in your home catalog? [Y]es/[N]o"
        read ANS
        if [[ $ANS == "Y" || $ANS == "y" || $ANS == "Yes" || $ANS == "yes" ]]
            then
                mkdir $HOME/AndroidDevice
                echo "Mount point is created."
        fi

        if [[ $ANS == "N" || $ANS == "n" || $ANS == "No" || $ANS == "no" ]]
            then
                echo -e "We do not create mount point."
                exit 2
        fi
fi

go-mtpfs ~/AndroidDevice &
# Note: If go-mtpfs is not ran in the background (with & at the end), another console will be needed to browse the device and unmount the device (when finished).
echo "Device is mounted."
echo "Do you wish unmount it? Yes=press Y key" ## Нелогично, т.к. нажав N оно всеравно отмонтируется. Соответственно либо просто писать "Press any key to unmount…", либо делать обработку ввода как с созданием точки монтирования.
read B
fusermount -u ~/AndroidDevice

## echo "Unmount is Ok." ## А точно ли ОК?? СтОит, все-же, проверить код завершения предыдущей комманды

if [ $(echo $?) != "0" ]
    then
        echo "Unmount failed"
        exit 3
fi

echo "Unmount is Ok."
exit 3 ## Не "exit 3", а "exit 0", т.к. это нормальное завершение работы. Нулевой код завершения означает правильное завершение, любой НЕнулевой - ошибку в выполнении.


Ответить | Правка | К родителю #16 | Наверх | Cообщить модератору

20. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от Isothiocyanate (ok), 16-Янв-21, 11:18 

> if [ -d $HOME/AndroidDevice ]
>     then
>   ANS=A  ## Не вкурил: что это?? Зачем?
>   echo "Mount point exist."
>     else
>   echo "Make dir AndroidDevice in your home catalog? [Y]es/[N]o"
>   read ANS
> fi

Если ANS не присвоить значение отличное от Y/N - программа входит в цикл и выходит на выход exit2.

>[оверквотинг удален]
>     mkdir $HOME/AndroidDevice
>     echo "Mount point is created."
>   fi
>   if [[ $ANS == "N" || $ANS == "n" ||
> $ANS == "No" || $ANS == "no" ]]
>    then
>     echo -e "We do not create mount point."
>     exit 2
>   fi
> fi

У меня тоже был вначале вложенный цикл. Но программа нормально не выполняла вложенный цикл, поэтому пришлось разбить на 2 отдельных.

>[оверквотинг удален]
> # Note: If go-mtpfs is not ran in the background (with &
> at the end), another console will be needed to browse the
> device and unmount the device (when finished).
> echo "Device is mounted."
> echo "Do you wish unmount it? Yes=press Y key" ## Нелогично, т.к.
> нажав N оно всеравно отмонтируется. Соответственно либо просто писать "Press any
> key to unmount…", либо делать обработку ввода как с созданием точки
> монтирования.
> read B
> fusermount -u ~/AndroidDevice

А это стоит добавить.

>[оверквотинг удален]
> if [ $(echo $?) != "0" ]
>  then
>   echo "Unmount failed"
>   exit 3
> fi
> echo "Unmount is Ok."
> exit 3 ## Не "exit 3", а "exit 0", т.к. это нормальное
> завершение работы. Нулевой код завершения означает правильное завершение, любой НЕнулевой
> - ошибку в выполнении.
>

Ответить | Правка | Наверх | Cообщить модератору

21. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от DiabloPC_пробегалemail (?), 16-Янв-21, 11:40 

> Если ANS не присвоить значение отличное от Y/N - программа входит в
> цикл и выходит на выход exit2.
> У меня тоже был вначале вложенный цикл. Но программа нормально не выполняла
> вложенный цикл, поэтому пришлось разбить на 2 отдельных.

По обеим пунктам: НЕ ВЕРЮ!!!
Что первое, что второе может не работать, либо вылететь в ошибки только при наличии ошибок или очепяток в самом скрипте. Но в таком случае нужно не добавлять несколько лишних и естественно нелогичных действий в код, а искать свои косяки.

Ответить | Правка | Наверх | Cообщить модератору

22. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от Isothiocyanate (ok), 16-Янв-21, 18:42 
> По обеим пунктам: НЕ ВЕРЮ!!!
> Что первое, что второе может не работать, либо вылететь в ошибки только
> при наличии ошибок или очепяток в самом скрипте. Но в таком
> случае нужно не добавлять несколько лишних и естественно нелогичных действий в
> код, а искать свои косяки.

Я думаю там могли быть какие-то ошибки, вызванные моим незнанием bash, которые я самостоятельно не смог устранить, поэтому переписал весь скрипт через одно место, лишь бы работало и выложил на форум то что вышло в итоге.

Возможно, если бы я сохранил вариант с воложенным циклом, ты бы смог найти там ошибку, которую в упор не видел я. В принцмпе, bash ругался на fi большего внешнего цикла и на конец программы, на последнюю строку тоже.

Я правильно понял что знак ! равносилен then ?

Ответить | Правка | Наверх | Cообщить модератору

24. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от DiabloPC_пробегалemail (?), 17-Янв-21, 02:17 
> Я правильно понял что знак ! равносилен then ?

Нет, не правильно.
"!" это отрицание, т.е логическое НЕ

## если каталог существует
if [ -d /path/to/dir ]

## если каталог НЕ существует
if ! [ -d /path/to/dir ]

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

Ответить | Правка | Наверх | Cообщить модератору

19. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от DiabloPC_пробегалemail (?), 16-Янв-21, 04:20 
По поводу вот этих двух строк, если делать без обработки ввода

> echo "Do you wish unmount it? Yes=press Y key"
> read B

Это можно сделать вот так:

read -n 1 -r -s -p $'Press any key to unmount...\n'

Ответить | Правка | К родителю #16 | Наверх | Cообщить модератору

23. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от Isothiocyanate (ok), 16-Янв-21, 19:46 
> Это можно сделать вот так:
>
read -n 1 -r -s -p $'Press any key to unmount...\n'

DiabloPC, может книгу какую посоветуешь? как-то по интернет статьям учиться не то.

Ответить | Правка | Наверх | Cообщить модератору

25. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от DiabloPC_пробегалemail (?), 17-Янв-21, 04:03 
Первое что приходит в голову это ABS
https://tldp.org/LDP/abs/abs-guide.pdf
Ответить | Правка | Наверх | Cообщить модератору

26. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от DiabloPC_пробегалemail (?), 17-Янв-21, 04:05 
Ну а скрипт советую попробовать переписать с нуля и если что не будет получаться, выкладывать сюда - будем разбираться
Ответить | Правка | К родителю #23 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру