Merge https://github.com/evilsocket/pwnagotchi into win_connection_share.ps1
This commit is contained in:
commit
a76af20382
@ -3,28 +3,135 @@
|
||||
- 127.0.0.1
|
||||
become: yes
|
||||
vars:
|
||||
pwn_hostname: "pwnagotchi"
|
||||
pwn_version: "master"
|
||||
pwnagotchi:
|
||||
hostname: "{{ lookup('env', 'PWN_HOSTNAME') | default('pwnagotchi', true) }}"
|
||||
version: "{{ lookup('env', 'PWN_VERSION') | default('master', true) }} "
|
||||
system:
|
||||
boot_options:
|
||||
- "dtoverlay=dwc2"
|
||||
- "dtparam=spi=on"
|
||||
- "dtoverlay=spi1-3cs"
|
||||
- "dtoverlay=pi3-disable-bt"
|
||||
- "dtparam=audio=off"
|
||||
services:
|
||||
enable:
|
||||
- dphys-swapfile.service
|
||||
- getty@ttyGS0.service
|
||||
disable:
|
||||
- apt-daily.timer
|
||||
- apt-daily.service
|
||||
- apt-daily-upgrade.timer
|
||||
- apt-daily-upgrade.service
|
||||
- wpa_supplicant.service
|
||||
- bluetooth.service
|
||||
- triggerhappy.service
|
||||
- ifup@wlan0.service
|
||||
packages:
|
||||
pip:
|
||||
install:
|
||||
- inky
|
||||
- smbus2
|
||||
- absl-py>=0.1.6
|
||||
- enum34
|
||||
- gast==0.2.2
|
||||
- google_pasta
|
||||
- opt_einsum
|
||||
- scapy
|
||||
- gym
|
||||
- keras_applications>=1.0.6
|
||||
- keras_preprocessing>=1.0.5
|
||||
- stable-baselines
|
||||
- file_read_backwards
|
||||
- tensorflow_estimator>=1.14.0,<1.15.0
|
||||
- tensorboard>=1.13.0,<1.14.0
|
||||
apt:
|
||||
remove:
|
||||
- rasberrypi-net-mods
|
||||
- dhcpcd5
|
||||
- triggerhappy
|
||||
- wpa_supplicant
|
||||
- nfs-common
|
||||
install:
|
||||
- vim
|
||||
- screen
|
||||
- golang
|
||||
- git
|
||||
- build-essential
|
||||
- python3-pip
|
||||
- unzip
|
||||
- gawk
|
||||
- libopenmpi-dev
|
||||
- libatlas-base-dev
|
||||
- libjasper-dev
|
||||
- libqtgui4
|
||||
- libqt4-test
|
||||
- libopenjp2-7
|
||||
- tcpdump
|
||||
- lsof
|
||||
- libilmbase23
|
||||
- libopenexr23
|
||||
- libgstreamer1.0-0
|
||||
- libavcodec58
|
||||
- libavformat58
|
||||
- libswscale5
|
||||
- libpcap-dev
|
||||
- libusb-1.0-0-dev
|
||||
- libnetfilter-queue-dev
|
||||
- dphys-swapfile
|
||||
- kalipi-kernel
|
||||
- kalipi-bootloader
|
||||
- kalipi-re4son-firmware
|
||||
- kalipi-kernel-headers
|
||||
- libraspberrypi0
|
||||
- libraspberrypi-dev
|
||||
- libraspberrypi-doc
|
||||
- libraspberrypi-bin
|
||||
- fonts-dejavu
|
||||
- fonts-dejavu-core
|
||||
- fonts-dejavu-extra
|
||||
- python3-crypto
|
||||
- python3-requests
|
||||
- python3-yaml
|
||||
- python3-smbus
|
||||
- python3-inkyphat
|
||||
- python3-numpy
|
||||
- python3-pil
|
||||
- python3-tweepy
|
||||
- python3-opencv
|
||||
- python3-termcolor
|
||||
- python3-astor
|
||||
- python3-backports.weakref
|
||||
- python3-h5py
|
||||
- python3-six
|
||||
- python3-protobuf
|
||||
- python3-wrapt
|
||||
- python3-wheel
|
||||
- python3-mock
|
||||
- python3-scipy
|
||||
- python3-cloudpickle
|
||||
|
||||
bettercap:
|
||||
query: "assets[?contains(name, 'armv6l')].browser_download_url"
|
||||
|
||||
tasks:
|
||||
|
||||
- name: selected hostname
|
||||
debug:
|
||||
msg: "{{ pwn_hostname }}"
|
||||
msg: "{{ pwnagotchi.hostname }}"
|
||||
|
||||
- name: build version
|
||||
debug:
|
||||
msg: "{{ pwn_version }}"
|
||||
msg: "{{ pwnagotchi.version }}"
|
||||
|
||||
- name: change hostname
|
||||
hostname:
|
||||
name: "{{pwn_hostname}}"
|
||||
name: "{{pwnagotchi.hostname}}"
|
||||
|
||||
- name: add hostname to /etc/hosts
|
||||
lineinfile:
|
||||
dest: /etc/hosts
|
||||
regexp: '^127\.0\.0\.1[ \t]+localhost'
|
||||
line: '127.0.0.1 localhost {{pwn_hostname}} {{pwn_hostname}}.local'
|
||||
line: '127.0.0.1 localhost {{pwnagotchi.hostname}} {{pwnagotchi.hostname}}.local'
|
||||
state: present
|
||||
|
||||
- name: Add re4son-kernel repo key
|
||||
@ -41,88 +148,55 @@
|
||||
apt:
|
||||
update_cache: yes
|
||||
|
||||
- name: remove unecessary apt packages
|
||||
apt:
|
||||
name: "{{ packages.apt.remove }}"
|
||||
state: absent
|
||||
purge: yes
|
||||
|
||||
- name: upgrade apt distro
|
||||
apt:
|
||||
upgrade: dist
|
||||
|
||||
- name: install packages
|
||||
apt:
|
||||
name: "{{ packages }}"
|
||||
name: "{{ packages.apt.install }}"
|
||||
state: present
|
||||
vars:
|
||||
packages:
|
||||
- vim
|
||||
- screen
|
||||
- golang
|
||||
- git
|
||||
- build-essential
|
||||
- python3-pip
|
||||
- gawk
|
||||
- libopenmpi-dev
|
||||
- libatlas-base-dev
|
||||
- libjasper-dev
|
||||
- libqtgui4
|
||||
- libqt4-test
|
||||
- libopenjp2-7
|
||||
- tcpdump
|
||||
- lsof
|
||||
- libilmbase23
|
||||
- libopenexr23
|
||||
- libgstreamer1.0-0
|
||||
- libavcodec58
|
||||
- libavformat58
|
||||
- libswscale5
|
||||
- libpcap-dev
|
||||
- libusb-1.0-0-dev
|
||||
- libnetfilter-queue-dev
|
||||
- dphys-swapfile
|
||||
- kalipi-kernel
|
||||
- kalipi-bootloader
|
||||
- kalipi-re4son-firmware
|
||||
- kalipi-kernel-headers
|
||||
- libraspberrypi0
|
||||
- libraspberrypi-dev
|
||||
- libraspberrypi-doc
|
||||
- libraspberrypi-bin
|
||||
- fonts-dejavu
|
||||
- fonts-dejavu-core
|
||||
- fonts-dejavu-extra
|
||||
|
||||
- name: configure dphys-swapfile
|
||||
file:
|
||||
path: /etc/dphys-swapfile
|
||||
content: "CONF_SWAPSIZE=1024"
|
||||
|
||||
- name: disable unecessary services
|
||||
systemd:
|
||||
name: "{{services}}"
|
||||
state: stopped
|
||||
enabled: no
|
||||
vars:
|
||||
services:
|
||||
- apt-daily.timer
|
||||
- apt-daily.service
|
||||
- apt-daily-upgrade.timer
|
||||
- apt-daily-upgrade.service
|
||||
- bluetooth.service
|
||||
- triggerhappy.service
|
||||
- name: acquire python3 pip target
|
||||
command: "python3 -c 'import sys;print(sys.path.pop())'"
|
||||
register: pip_target
|
||||
|
||||
- name: enable dphys-swapfile service
|
||||
systemd:
|
||||
name: dphys-swapfile.service
|
||||
state: started
|
||||
enabled: yes
|
||||
- name: install pip packages
|
||||
pip:
|
||||
name: "{{packages.pip.install}}"
|
||||
extra_args: "--no-deps --extra-index-url=https://www.piwheels.hostedpi.com/simple/ --prefer-binary --no-cache-dir --platform=armv6l --target={{ pip_target.stdout }}"
|
||||
|
||||
- name: build bettercap
|
||||
command: go get -u github.com/bettercap/bettercap
|
||||
environment:
|
||||
GOPATH: /root/go
|
||||
GOROOT: /usr/lib/go
|
||||
- name: install grpcio
|
||||
command: "pip3 install --no-deps --extra-index-url=https://www.piwheels.hostedpi.com/simple/ --no-cache-dir --prefer-binary --platform=armv6l --only-binary=:all: --target={{ pip_target.stdout }} https://www.piwheels.hostedpi.com/simple/grpcio/grpcio-1.24.1-cp37-cp37m-linux_armv6l.whl"
|
||||
|
||||
- name: install bettercap
|
||||
copy:
|
||||
src: /root/go/bin/bettercap
|
||||
dest: /usr/bin/bettercap
|
||||
- name: install tensorflow
|
||||
command: "pip3 install --no-deps --extra-index-url=https://www.piwheels.hostedpi.com/simple/ --no-cache-dir --prefer-binary --platform=armv6l --only-binary=:all: --target={{ pip_target.stdout }} https://www.piwheels.org/simple/tensorflow/tensorflow-1.13.1-cp37-none-linux_armv6l.whl"
|
||||
|
||||
- name: fetch bettercap release information
|
||||
uri:
|
||||
url: https://api.github.com/repos/bettercap/bettercap/releases/latest
|
||||
return_content: yes
|
||||
register: bettercap_release
|
||||
|
||||
- name: download and install bettercap
|
||||
unarchive:
|
||||
src: "{{ bettercap_release.content | from_json | json_query(bettercap.query) | first }}"
|
||||
dest: /usr/bin
|
||||
remote_src: yes
|
||||
exclude:
|
||||
- README.md
|
||||
- LICENSE.md
|
||||
mode: 0755
|
||||
|
||||
- name: clone bettercap caplets
|
||||
@ -151,10 +225,6 @@
|
||||
path: /tmp/pwnagotchi
|
||||
state: absent
|
||||
|
||||
- name: install python modules
|
||||
pip:
|
||||
requirements: /root/pwnagotchi/scripts/requirements.txt
|
||||
|
||||
- name: create cpuusage script
|
||||
copy:
|
||||
dest: /usr/bin/cpuusage
|
||||
@ -249,11 +319,7 @@
|
||||
insertafter: EOF
|
||||
line: '{{ item }}'
|
||||
with_items:
|
||||
- "dtoverlay=dwc2"
|
||||
- "dtparam=spi=on"
|
||||
- "dtoverlay=spi1-3cs"
|
||||
- "dtoverlay=pi3-disable-bt"
|
||||
- "dtparam=audio=off"
|
||||
- "{{system.boot_options}}"
|
||||
|
||||
- name: change root partition
|
||||
replace:
|
||||
@ -269,7 +335,7 @@
|
||||
state: present
|
||||
backup: no
|
||||
regexp: '(.*)$'
|
||||
line: '\1 modules-load=dwc2,g_ether'
|
||||
line: '\1 modules-load=dwc2,g_cdc'
|
||||
|
||||
- name: configure ssh
|
||||
lineinfile:
|
||||
@ -281,7 +347,7 @@
|
||||
- name: configure motd
|
||||
copy:
|
||||
dest: /etc/motd
|
||||
content: "(◕‿‿◕) {{pwn_hostname}} (pwnagotchi-{{pwn_version}})"
|
||||
content: "(◕‿‿◕) {{pwnagotchi.hostname}} (pwnagotchi-{{pwnagotchi.version}})"
|
||||
|
||||
- name: clean apt cache
|
||||
apt:
|
||||
@ -291,16 +357,21 @@
|
||||
apt:
|
||||
autoremove: yes
|
||||
|
||||
- name: enable services
|
||||
systemd:
|
||||
name: "{{services.enable}}"
|
||||
state: started
|
||||
enabled: yes
|
||||
|
||||
- name: disable unecessary services
|
||||
systemd:
|
||||
name: "{{services.disable}}"
|
||||
state: stopped
|
||||
enabled: no
|
||||
|
||||
- name: remove ssh keys
|
||||
file:
|
||||
state: absent
|
||||
path: "{{item}}"
|
||||
with_items:
|
||||
- /etc/ssh/ssh_host_rsa_key
|
||||
- /etc/ssh/ssh_host_rsa_key.pub
|
||||
- /etc/ssh/ssh_host_dsa_key
|
||||
- /etc/ssh/ssh_host_dsa_key.pub
|
||||
- /etc/ssh/ssh_host/ecdsa_key
|
||||
- /etc/ssh/ssh_host/ecdsa_key.pub
|
||||
- /etc/ssh/ssh_host_ed25519_key
|
||||
- /etc/ssh/ssh_host_ed25519_key.pub
|
||||
with_fileglob:
|
||||
- "/etc/ssh/ssh_host*_key*"
|
||||
|
@ -40,6 +40,8 @@ For instance, you can change `main.lang` to one of the supported languages:
|
||||
- macedonian
|
||||
- italian
|
||||
- french
|
||||
- russian
|
||||
- swedish
|
||||
|
||||
## Display Selection
|
||||
|
||||
|
@ -2,6 +2,9 @@
|
||||
|
||||
The project has been developed to run on a Raspberry Pi 0 W configured as an [USB Ethernet gadget](https://learn.adafruit.com/turning-your-raspberry-pi-zero-into-a-usb-gadget/ethernet-gadget) device in order to connect to it via USB. However, given the proper configuration tweaks, any GNU/Linux computer with a WiFi interface that supports monitor mode could be used.
|
||||
|
||||
*An important note about the AI:* a network trained with a specific WiFi interface will only work with another interface if it supports
|
||||
the same exact WiFi channels of the first one. For instance, you can not use a neural network trained on a Raspberry Pi Zero W (that only supports 2.4Ghz channels) with a 5Ghz antenna, but you'll need to train one from scratch for those channels.
|
||||
|
||||
## Required Hardware
|
||||
|
||||
- [Raspberry Pi Zero W](https://www.raspberrypi.org/products/raspberry-pi-zero-w/).
|
||||
|
@ -1,6 +1,6 @@
|
||||
# main algorithm configuration
|
||||
main:
|
||||
# currently implemented: en (default), de, el, fr, it, mk, nl, se
|
||||
# currently implemented: en (default), de, el, fr, it, mk, nl, ru, se
|
||||
lang: en
|
||||
# custom plugins path, if null only default plugins with be loaded
|
||||
custom_plugins:
|
||||
@ -15,7 +15,7 @@ main:
|
||||
files:
|
||||
- /root/brain.nn
|
||||
- /root/brain.json
|
||||
- /root/custom.yaml
|
||||
- /root/custom.yml
|
||||
- /root/handshakes
|
||||
- /etc/ssh
|
||||
- /etc/hostname
|
||||
@ -24,7 +24,7 @@ main:
|
||||
- /var/log/pwnagotchi.log
|
||||
commands:
|
||||
- 'tar czf /tmp/backup.tar.gz {files}'
|
||||
- 'scp /tmp/backup.tar.gz pwnagotchi@10.0.0.1:/home/pwnagotchi/backups/backup-$(date).tar.gz'
|
||||
- 'scp /tmp/backup.tar.gz pwnagotchi@10.0.0.1:/home/pwnagotchi/backups/backup-$(date +%s).tar.gz'
|
||||
gps:
|
||||
enabled: false
|
||||
twitter:
|
||||
|
@ -1,6 +1,6 @@
|
||||
import subprocess
|
||||
|
||||
version = '1.0.0plz2'
|
||||
version = '1.0.0plz3'
|
||||
|
||||
_name = None
|
||||
|
||||
|
Binary file not shown.
@ -0,0 +1,205 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <25989971+adolfaka@users.noreply.github.com>, 2019.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-10-03 16:47+0200\n"
|
||||
"PO-Revision-Date: 2019-10-05 18:50+0300\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2.4\n"
|
||||
"Last-Translator: Elliot Manson\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
|
||||
"Language: ru_RU\n"
|
||||
|
||||
msgid "ZzzzZZzzzzZzzz"
|
||||
msgstr "ZzzzZZzzzzZzzz"
|
||||
|
||||
msgid "Hi, I'm Pwnagotchi! Starting ..."
|
||||
msgstr "Привет, я Pwnagotchi! Поехали …"
|
||||
|
||||
msgid "New day, new hunt, new pwns!"
|
||||
msgstr "Новый день, новая охота, новые взломы!"
|
||||
|
||||
msgid "Hack the Planet!"
|
||||
msgstr "Взломаем всю планету!"
|
||||
|
||||
msgid "AI ready."
|
||||
msgstr "Искусственный интеллект готов."
|
||||
|
||||
msgid "The neural network is ready."
|
||||
msgstr "Нейронная сеть готова."
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Hey, channel {channel} is free! Your AP will say thanks."
|
||||
msgstr "Эй, канал {channel} свободен! Ваша точка доступа скажет спасибо."
|
||||
|
||||
msgid "I'm bored ..."
|
||||
msgstr "Мне скучно …"
|
||||
|
||||
msgid "Let's go for a walk!"
|
||||
msgstr "Пойдем прогуляемся!"
|
||||
|
||||
msgid "This is the best day of my life!"
|
||||
msgstr "Это лучший день в моей жизни!"
|
||||
|
||||
msgid "Shitty day :/"
|
||||
msgstr "Дерьмовый день :/"
|
||||
|
||||
msgid "I'm extremely bored ..."
|
||||
msgstr "Мне очень скучно …"
|
||||
|
||||
msgid "I'm very sad ..."
|
||||
msgstr "Мне очень грустно …"
|
||||
|
||||
msgid "I'm sad"
|
||||
msgstr "Мне грустно"
|
||||
|
||||
msgid "I'm living the life!"
|
||||
msgstr "Я живу своей жизнью!"
|
||||
|
||||
msgid "I pwn therefore I am."
|
||||
msgstr "Я взламываю, поэтому я существую."
|
||||
|
||||
msgid "So many networks!!!"
|
||||
msgstr "Так, много сетей!!!"
|
||||
|
||||
msgid "I'm having so much fun!"
|
||||
msgstr "Мне так весело!"
|
||||
|
||||
msgid "My crime is that of curiosity ..."
|
||||
msgstr "Моё преступление - это любопытство …"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Hello {name}! Nice to meet you. {name}"
|
||||
msgstr "Привет, {name}! Приятно познакомиться. {name}"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Unit {name} is nearby! {name}"
|
||||
msgstr "Цель {name} близко! {name}"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Uhm ... goodbye {name}"
|
||||
msgstr "Хм … до свидания {name}"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "{name} is gone ..."
|
||||
msgstr "{name} исчезла …"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Whoops ... {name} is gone."
|
||||
msgstr "Упс … {name} исчезла."
|
||||
|
||||
#, python-brace-format
|
||||
msgid "{name} missed!"
|
||||
msgstr "{name} упустил!"
|
||||
|
||||
msgid "Missed!"
|
||||
msgstr "Промахнулся!"
|
||||
|
||||
msgid "Nobody wants to play with me ..."
|
||||
msgstr "Никто не хочет играть со мной …"
|
||||
|
||||
msgid "I feel so alone ..."
|
||||
msgstr "Мне так одиноко …"
|
||||
|
||||
msgid "Where's everybody?!"
|
||||
msgstr "Где все?!"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Napping for {secs}s ..."
|
||||
msgstr "Дремлет {secs}с …"
|
||||
|
||||
msgid "Zzzzz"
|
||||
msgstr "Zzzzz"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "ZzzZzzz ({secs}s)"
|
||||
msgstr "ZzzZzzz ({secs}c)"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Waiting for {secs}s ..."
|
||||
msgstr "Ждем {secs}c …"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Looking around ({secs}s)"
|
||||
msgstr "Оглядываюсь вокруг ({secs}с)"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Hey {what} let's be friends!"
|
||||
msgstr "Эй, {what} давай дружить!"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Associating to {what}"
|
||||
msgstr "Связываюсь с {what}"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Yo {what}!"
|
||||
msgstr "Йоy {what}!"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Just decided that {mac} needs no WiFi!"
|
||||
msgstr "Просто решил, что {mac} не нужен WiFi! Кхе-кхе)"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Deauthenticating {mac}"
|
||||
msgstr "Деаутентификация {mac}"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Kickbanning {mac}!"
|
||||
msgstr "Кикаю {mac}!"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Cool, we got {num} new handshake{plural}!"
|
||||
msgstr "Круто, мы получили {num} новое рукопожатие!"
|
||||
|
||||
msgid "Ops, something went wrong ... Rebooting ..."
|
||||
msgstr "Ой, что-то пошло не так … Перезагружаюсь …"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Kicked {num} stations\n"
|
||||
msgstr "Кикнул {num} станцию\n"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Made {num} new friends\n"
|
||||
msgstr "Заимел {num} новых друзей\n"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Got {num} handshakes\n"
|
||||
msgstr "Получил {num} рукопожатие\n"
|
||||
|
||||
msgid "Met 1 peer"
|
||||
msgstr "Встретился один знакомый"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Met {num} peers"
|
||||
msgstr "Встретились {num} приятелей"
|
||||
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
|
||||
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
|
||||
"#pwnlog #pwnlife #hacktheplanet #skynet"
|
||||
msgstr ""
|
||||
"Я взламывал {duration} и кикнул {deauthed} клиентов! Я также встретил "
|
||||
"{associated} новых друзей и съел {handshakes} рукопожатий! #pwnagotchi "
|
||||
"#pwnlog #pwnlife #hacktheplanet #skynet"
|
||||
|
||||
msgid "hours"
|
||||
msgstr "часов"
|
||||
|
||||
msgid "hour"
|
||||
msgstr "час"
|
||||
|
||||
msgid "minutes"
|
||||
msgstr "минут"
|
||||
|
||||
msgid "minute"
|
||||
msgstr "минуту"
|
@ -30,6 +30,7 @@ def on_loaded():
|
||||
return
|
||||
|
||||
READY = True
|
||||
logging.info("AUTO-BACKUP: Successfuly loaded.")
|
||||
|
||||
|
||||
def on_internet_available(display, config, log):
|
||||
@ -41,11 +42,17 @@ def on_internet_available(display, config, log):
|
||||
|
||||
files_to_backup = " ".join(OPTIONS['files'])
|
||||
try:
|
||||
logging.info("AUTO-BACKUP: Backing up ...")
|
||||
display.set('status', 'Backing up ...')
|
||||
display.update()
|
||||
|
||||
for cmd in OPTIONS['commands']:
|
||||
subprocess.call(cmd.format(files=files_to_backup).split(), stdout=open(os.devnull, 'wb'))
|
||||
logging.info(f"AUTO-BACKUP: Running {cmd.format(files=files_to_backup)}")
|
||||
process = subprocess.Popen(cmd.format(files=files_to_backup), shell=True, stdin=None,
|
||||
stdout=open("/dev/null", "w"), stderr=None, executable="/bin/bash")
|
||||
process.wait()
|
||||
if process.returncode > 0:
|
||||
raise OSError(f"Command failed (rc: {process.returncode})")
|
||||
|
||||
logging.info("AUTO-BACKUP: backup done")
|
||||
STATUS.update()
|
||||
|
Loading…
x
Reference in New Issue
Block a user