[совет] Автоматическое отправление файлов.

Тема в разделе "Raspberry Pi", создана пользователем Sakera, 1 дек 2018.

  1. Sakera

    Sakera Нуб

    Всем дороу. Нужна помощь/совет. В общем,хочу подключить к малинке card reader,и надо сделать так,что бы при подключении SD card последний файл с неё автоматически отправлялся на сервер. Подскажите,что почитать,может статьи какие есть или готовый вариант? Язык думаю использовать python. Какие библиотеки юзать?
    p.s сейчас стоит rasbian. отправлять хочу любые типы файлов. просто на малинке файлы на сервер я отправлял через библиотеку 'ftp',нужна автоматика + card reader!
     
  2. Ну для начала прочитайте маны по удев и разберитесь, как вызывать скрипт по вставке вашей карточки.
     
  3. Igor68

    Igor68 Гуру

    Прошу прощения! А в /media не происходит монтирование внешних устройств?
    А дату и время по вот этому никак не найти?:
    Код (Text):
    www-data@pi01:~$ ls
    bash  config  Desktop  doc  MPI  mpi.hosts  ramdisk  src  task  test  trans
    www-data@pi01:~$ ls -al
    total 108
    drwxrwxrwx 22 www-data www-data 4096 Apr 23  2018 .
    drwxr-xr-x  5 root     root     4096 Jan  9  2018 ..
    drwxr-xr-x  3 www-data www-data 4096 Aug 18 11:28 bash
    -rw-------  1 www-data www-data 5718 Dec  1 20:37 .bash_history
    -rw-r--r--  1 www-data www-data  376 Apr  3  2018 .boinctui.cfg
    drwx------  5 www-data www-data 4096 Feb 23  2018 .cache
    drwxr-xr-x  2 www-data www-data 4096 May 27  2018 config
    drwx------  6 www-data www-data 4096 Mar  2  2018 .config
    drwx------  3 www-data www-data 4096 Feb 23  2018 .dbus
    drwxr-xr-x  2 www-data www-data 4096 Feb 23  2018 Desktop
    drwxr-xr-x  3 www-data www-data 4096 Apr  5  2018 doc
    drwx------  2 www-data www-data 4096 Apr 23  2018 .gconf
    drwx------  3 www-data www-data 4096 Apr 23  2018 .gnome2
    drwx------  2 www-data www-data 4096 Mar  2  2018 .gnome2_private
    drwx------  3 www-data www-data 4096 Mar  2  2018 .gnome-commander
    drwx------  3 www-data www-data 4096 Jan  9  2018 .local
    drwx------  4 www-data www-data 4096 Feb 23  2018 .mozilla
    drwxr-xr-x  3 www-data www-data 4096 Apr  1  2018 MPI
    -rw-r--r--  1 www-data www-data   25 Apr  3  2018 mpi.hosts
    drwxrwxrwx  2 root     root      160 Dec  1 20:38 ramdisk
    -rw-r--r--  1 www-data www-data   66 Jan 10  2018 .selected_editor                                                                                                                          
    drwxr-xr-x 18 www-data www-data 4096 Sep 26 19:12 src                                                                                                                                        
    drwx--x--x  2 www-data www-data 4096 Apr  5  2018 .ssh                                                                                                                                      
    drwxr-xr-x  2 www-data www-data 4096 Jan 14  2018 task                                                                                                                                      
    drwxr-xr-x  2 www-data www-data 4096 Jan 11  2018 test                                                                                                                                      
    drwxr-xr-x  6 www-data www-data 4096 Jul 19 02:07 trans                                                                                                                                      
    -rw-------  1 www-data www-data  107 Apr 23  2018 .Xauthority                                                                                                                                
    www-data@pi01:~$
    Надо только сначала перейти по нужному пути ну или ls с указанием пути.

    А так нельзя определить устройство? (media ключевое слово):
    Код (Text):
    www-data@pi01:~$ mount
    /dev/mmcblk0p2 on / type ext4 (rw,noatime,data=ordered)
    devtmpfs on /dev type devtmpfs (rw,relatime,size=468148k,nr_inodes=117037,mode=755)
    sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
    proc on /proc type proc (rw,relatime)
    tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
    devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
    tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
    tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
    tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
    cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
    cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
    cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
    cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
    cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
    cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
    cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
    systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=22,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
    mqueue on /dev/mqueue type mqueue (rw,relatime)
    debugfs on /sys/kernel/debug type debugfs (rw,relatime)
    configfs on /sys/kernel/config type configfs (rw,relatime)
    fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
    tmpfs on /var/tmp type tmpfs (rw,nosuid,nodev,relatime,size=40960k)
    /dev/mmcblk0p1 on /boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro)
    tmpfs on /mnt/ram0 type tmpfs (rw,nosuid,nodev,relatime,size=40960k)
    tmpfs on /home/httpd/ramdisk type tmpfs (rw,nosuid,nodev,relatime,size=40960k)
    tmpfs on /run/user/1002 type tmpfs (rw,nosuid,nodev,relatime,size=94552k,mode=700,uid=1002,gid=1002)
    tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=94552k,mode=700,uid=1000,gid=1000)
    gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)
    /dev/sda on /media/pi/Debian sque type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0077,codepage=437,iocharset=ascii,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)
    www-data@pi01:~$
    Правда тут я воткнул USB-FLASH а не кардридер, но думаю он по USB и так туда встанет...
    ну и:
    Код (Text):
    www-data@pi01:~$ ls -al /media/pi/Transcend
    ls: cannot access /media/pi/Transcend: Permission denied
    www-data@pi01:~$ su
    Password:
    root@pi01:/home/httpd# ls -al /media/pi/Transcend
    total 1197872
    drwx------  17 pi   pi         4096 Jan  1  1970 .
    drwxr-x---+  3 root root       4096 Dec  2 14:06 ..
    drwx------  20 pi   pi         4096 Dec  7  2011 123
    drwx------   2 pi   pi         4096 Jun 18  2012 2 часть
    drwx------   2 pi   pi         4096 Jul 19  2012 .android_secure
    -rw-r--r--   1 pi   pi         1494 Apr 24  2012 BOOTEX.LOG
    -rw-r--r--   1 pi   pi      8082209 Nov 25  2011 codelite-3.0.0.5041.tar.gz
    drwx------   4 pi   pi         4096 Jan 18  2012 distr
    -rw-r--r--   1 pi   pi      8747178 Dec  1  2011 doublecmd-0.5.1-1.gtk2.i386.tar.bz2
    -rw-r--r--   1 pi   pi        74240 Jun  8  2012 ekonomika_2.doc
    -rw-r--r--   1 pi   pi        23040 Jun  8  2012 ekonomika_liter.doc
    -rw-r--r--   1 pi   pi      3037382 Nov 25  2011 emacs23-lucid_23.1+1-4ubuntu7_i386.deb
    drwx------   3 pi   pi         4096 Jun 18  2012 it_labs
    drwx------   5 pi   pi         4096 Dec  8  2011 Lin_C++_DOC
    drwx------   2 pi   pi         4096 Jul 19  2012 LOST.DIR
    drwx------  16 pi   pi         4096 Apr  5  2012 moxa_kma
    drwx------   5 pi   pi         4096 Oct 12  2012 mt-linc
    drwx------   6 pi   pi         4096 Sep  9  2014 Prolific_usb_to_com
    -rw-r--r--   1 pi   pi   1178147211 Jul 12  2011 Qt_SDK_Lin32_offline_v1_1_2_en.run
    drwx------   2 pi   pi         4096 Jun  8  2012 RECYCLER
    -rw-r--r--   1 pi   pi           36 Jan 18  2012 syncguid.dat
    drwx------   3 pi   pi         4096 Sep  2  2012 tmp
    drwx------   3 pi   pi         4096 Jun 19  2012 user
    drwx------   3 pi   pi         4096 Nov 28  2011 VirtBox
    -rw-r--r--   1 pi   pi     28354060 Nov 25  2011 zcp-7.0.3-30515-ubuntu-10.04-i386-free.tar.gz
    drwx------   2 pi   pi         4096 Jun 21  2012 СУБД
    -rw-r--r--   1 pi   pi        58718 Jun  8  2012 экономика лекции-2.docx
    root@pi01:/home/httpd#
     
    Ну Вы же все любите sudo, а я нет и Вы же так же входите от пользователя pi я я от имени www-data сервера apache потому через su и вывел листинг. А время и дату посмотрите сами.
     
    Последнее редактирование: 2 дек 2018
  4. Igor68

    Igor68 Гуру

    И ещё:
    А при чём библиотека FTP? Это добавлено через apt-get?
    Вот:
    Код (Text):
    www-data@pi01:~$ ftp
    ftp> help
    Commands may be abbreviated.  Commands are:

    !               dir             mdelete         qc              site
    $               disconnect      mdir            sendport        size
    account         exit            mget            put             status
    append          form            mkdir           pwd             struct
    ascii           get             mls             quit            system
    bell            glob            mode            quote           sunique
    binary          hash            modtime         recv            tenex
    bye             help            mput            reget           tick
    case            idle            newer           rstatus         trace
    cd              image           nmap            rhelp           type
    cdup            ipany           nlist           rename          user
    chmod           ipv4            ntrans          reset           umask
    close           ipv6            open            restart         verbose
    cr              lcd             prompt          rmdir           ?
    delete          ls              passive         runique
    debug           macdef          proxy           send
    ftp>
     
    Как видите всё можно сделать через ftp если на другом конце (куда надо передать) всё готово.
    Воспользуйтесь man ftp
    Посмотрите put, get, mput, mget. Да и все команды как в консоли будут работать. Как в питоне не скажу, а в bash всё нормально.
     
  5. Igor68

    Igor68 Гуру

    Доброго времени суток!
    ...и после вышесказанного надо только записать всё в скрипт и поставить в автозапуск:)
     
  6. Igor68

    Igor68 Гуру

    Вот к примеру:
    Код (Bash):
    function ftp_from()
    {
    ftp -n $ipurl << INPUT_END
    quote USER $_login
    quote PASS $_passwd
    cd $_ftp_path
    binary
    prompt
    mget $_ftp_name
    quit
    INPUT_END
    }

    function ftp_to()
    {
    ftp -n $ipurl << INPUT_END
    quote USER $_login
    quote PASS $_passwd
    cd $_ftp_path
    binary
    prompt
    mput $_ftp_name
    quit
    INPUT_END
    }

    function ftp_from_one()
    {
    ftp -n $ipurl << INPUT_END
    quote USER $_login
    quote PASS $_passwd
    cd $_ftp_path
    binary
    prompt
    get $_ftp_name
    quit
    INPUT_END
    }

    function ftp_to_one()
    {
    ftp -n $ipurl << INPUT_END
    quote USER $_login
    quote PASS $_passwd
    cd $_ftp_path
    binary
    prompt
    put $_ftp_name
    quit
    INPUT_END
    }
    Так по одиночке и кучей часть скрипта таскает файлы туда-сюда по FTP

    А так:
    Код (Bash):
    function telnet_func()
    {
    _telnet_recv=$((
        sleep 1
        echo "$_login"
        sleep 1
        echo "$_passwd"
        sleep 1
        echo "$_telnet_send"
        sleep 3
        echo "exit"
    ) | telnet $ipurl 2>/dev/null)
    _telnet_recv=$(echo "$_telnet_recv" | sed '1,25d')
    }
     
    Скрипт управляет работой по TELNET, что крайне не рекомендовано вооще-то. А в Вашем случае ни к чему наверное вовсе.
     
  7. b707

    b707 Гуру

    по-моему, ник Igor68 взломали...
     
  8. Igor68

    Igor68 Гуру

    ???
    ...поясните если не трудно
     
  9. b707

    b707 Гуру

    просто необычно - на просьбу очередного халявщика столько текста и кода в ответ :) Чем он заслужил такую честь?
     
    Igor68 и ИгорьК нравится это.
  10. Igor68

    Igor68 Гуру

    А это куски не для него лично. Возможно кому-то интересно, что я на работе применил. А именно некий комп(сервер) с Debian имея некий скрипт на bash контролирует некие устройства в сети на Linux и Windows CE включая то, что перезапускает их по мере условий. А для линукс устройств ещё и помпилирует из исходников и заливает на них файлы, настраивает скрипты. И даже контролирует их работоспособность включая скрипты и программы на них. И всё это круглосуточно.
     
  11. alp69

    alp69 Гик

    Он всегда обстоятельно и полно отвечает. Респект!