also das viele =m heisst wohl keine nftables fuer mich als standart unter raspbian ?
und die =y bezieht sich auf die netfilter ?
also das viele =m heisst wohl keine nftables fuer mich als standart unter raspbian ?
und die =y bezieht sich auf die netfilter ?
der copy teufel gr
sudo zcat /proc/config.gz | grep -i nf_
CONFIG_NF_CONNTRACK=m
CONFIG_NF_LOG_COMMON=m
# CONFIG_NF_LOG_NETDEV is not set
CONFIG_NF_CONNTRACK_MARK=y
CONFIG_NF_CONNTRACK_ZONES=y
CONFIG_NF_CONNTRACK_PROCFS=y
CONFIG_NF_CONNTRACK_EVENTS=y
# CONFIG_NF_CONNTRACK_TIMEOUT is not set
CONFIG_NF_CONNTRACK_TIMESTAMP=y
CONFIG_NF_CONNTRACK_LABELS=y
CONFIG_NF_CT_PROTO_DCCP=y
CONFIG_NF_CT_PROTO_GRE=m
CONFIG_NF_CT_PROTO_SCTP=y
CONFIG_NF_CT_PROTO_UDPLITE=y
CONFIG_NF_CONNTRACK_AMANDA=m
CONFIG_NF_CONNTRACK_FTP=m
CONFIG_NF_CONNTRACK_H323=m
CONFIG_NF_CONNTRACK_IRC=m
CONFIG_NF_CONNTRACK_BROADCAST=m
CONFIG_NF_CONNTRACK_NETBIOS_NS=m
CONFIG_NF_CONNTRACK_SNMP=m
CONFIG_NF_CONNTRACK_PPTP=m
CONFIG_NF_CONNTRACK_SANE=m
CONFIG_NF_CONNTRACK_SIP=m
CONFIG_NF_CONNTRACK_TFTP=m
CONFIG_NF_CT_NETLINK=m
# CONFIG_NF_CT_NETLINK_TIMEOUT is not set
CONFIG_NF_NAT=m
CONFIG_NF_NAT_NEEDED=y
CONFIG_NF_NAT_PROTO_DCCP=y
CONFIG_NF_NAT_PROTO_UDPLITE=y
CONFIG_NF_NAT_PROTO_SCTP=y
CONFIG_NF_NAT_AMANDA=m
CONFIG_NF_NAT_FTP=m
CONFIG_NF_NAT_IRC=m
CONFIG_NF_NAT_SIP=m
CONFIG_NF_NAT_TFTP=m
CONFIG_NF_NAT_REDIRECT=m
# CONFIG_NF_TABLES is not set
CONFIG_NF_DEFRAG_IPV4=m
CONFIG_NF_CONNTRACK_IPV4=m
# CONFIG_NF_SOCKET_IPV4 is not set
CONFIG_NF_DUP_IPV4=m
# CONFIG_NF_LOG_ARP is not set
CONFIG_NF_LOG_IPV4=m
CONFIG_NF_REJECT_IPV4=m
CONFIG_NF_NAT_IPV4=m
CONFIG_NF_NAT_MASQUERADE_IPV4=m
CONFIG_NF_NAT_SNMP_BASIC=m
CONFIG_NF_NAT_PROTO_GRE=m
CONFIG_NF_NAT_PPTP=m
CONFIG_NF_NAT_H323=m
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_MATCH_AH=m
CONFIG_IP_NF_MATCH_ECN=m
CONFIG_IP_NF_MATCH_RPFILTER=m
CONFIG_IP_NF_MATCH_TTL=m
CONFIG_IP_NF_FILTER=m
CONFIG_IP_NF_TARGET_REJECT=m
# CONFIG_IP_NF_TARGET_SYNPROXY is not set
CONFIG_IP_NF_NAT=m
CONFIG_IP_NF_TARGET_MASQUERADE=m
CONFIG_IP_NF_TARGET_NETMAP=m
CONFIG_IP_NF_TARGET_REDIRECT=m
CONFIG_IP_NF_MANGLE=m
CONFIG_IP_NF_TARGET_CLUSTERIP=m
CONFIG_IP_NF_TARGET_ECN=m
CONFIG_IP_NF_TARGET_TTL=m
CONFIG_IP_NF_RAW=m
CONFIG_IP_NF_ARPTABLES=m
CONFIG_IP_NF_ARPFILTER=m
CONFIG_IP_NF_ARP_MANGLE=m
CONFIG_NF_DEFRAG_IPV6=m
CONFIG_NF_CONNTRACK_IPV6=m
# CONFIG_NF_SOCKET_IPV6 is not set
CONFIG_NF_DUP_IPV6=m
CONFIG_NF_REJECT_IPV6=m
CONFIG_NF_LOG_IPV6=m
CONFIG_NF_NAT_IPV6=m
CONFIG_NF_NAT_MASQUERADE_IPV6=m
CONFIG_IP6_NF_IPTABLES=m
CONFIG_IP6_NF_MATCH_AH=m
CONFIG_IP6_NF_MATCH_EUI64=m
CONFIG_IP6_NF_MATCH_FRAG=m
CONFIG_IP6_NF_MATCH_OPTS=m
CONFIG_IP6_NF_MATCH_HL=m
CONFIG_IP6_NF_MATCH_IPV6HEADER=m
CONFIG_IP6_NF_MATCH_MH=m
CONFIG_IP6_NF_MATCH_RPFILTER=m
CONFIG_IP6_NF_MATCH_RT=m
CONFIG_IP6_NF_TARGET_HL=m
CONFIG_IP6_NF_FILTER=m
CONFIG_IP6_NF_TARGET_REJECT=m
# CONFIG_IP6_NF_TARGET_SYNPROXY is not set
CONFIG_IP6_NF_MANGLE=m
CONFIG_IP6_NF_RAW=m
CONFIG_IP6_NF_NAT=m
CONFIG_IP6_NF_TARGET_MASQUERADE=m
CONFIG_IP6_NF_TARGET_NPT=m
CONFIG_BRIDGE_NF_EBTABLES=m
Alles anzeigen
huhu
das packet hatte ich schon mit sudo apt-get install nftables installiert,
doch dann meckerte er ueber fehlende module im kernel, sodass ich mich fragte warum und es mich zu diesem posting gefuehrt hat.
sudo apt-cache policy nftables
nftables:Installed: 0.7-1Candidate: 0.7-1Version table:*** 0.7-1 500500 http://raspbian.raspberrypi.org/raspbian stretch/main armhf Packages100 /var/lib/dpkg/status
sudo ls -la /lib/modules/$(uname -r)/kernel/net/netfilter | grep -i nf
-rw-r--r-- 1 root root 9784 Mar 28 12:05 nf_conntrack_amanda.ko
-rw-r--r-- 1 root root 4484 Mar 28 12:05 nf_conntrack_broadcast.ko
-rw-r--r-- 1 root root 14420 Mar 28 12:05 nf_conntrack_ftp.ko
-rw-r--r-- 1 root root 56108 Mar 28 12:05 nf_conntrack_h323.ko
-rw-r--r-- 1 root root 12152 Mar 28 12:05 nf_conntrack_irc.ko
-rw-r--r-- 1 root root 166732 Mar 28 12:05 nf_conntrack.ko
-rw-r--r-- 1 root root 5960 Mar 28 12:05 nf_conntrack_netbios_ns.ko
-rw-r--r-- 1 root root 45864 Mar 28 12:05 nf_conntrack_netlink.ko
-rw-r--r-- 1 root root 12720 Mar 28 12:05 nf_conntrack_pptp.ko
-rw-r--r-- 1 root root 11516 Mar 28 12:05 nf_conntrack_proto_gre.ko
-rw-r--r-- 1 root root 10192 Mar 28 12:05 nf_conntrack_sane.ko
-rw-r--r-- 1 root root 34880 Mar 28 12:05 nf_conntrack_sip.ko
-rw-r--r-- 1 root root 6560 Mar 28 12:05 nf_conntrack_snmp.ko
-rw-r--r-- 1 root root 9748 Mar 28 12:05 nf_conntrack_tftp.ko
-rw-r--r-- 1 root root 10112 Mar 28 12:05 nf_log_common.ko
-rw-r--r-- 1 root root 6204 Mar 28 12:05 nf_nat_amanda.ko
-rw-r--r-- 1 root root 7312 Mar 28 12:05 nf_nat_ftp.ko
-rw-r--r-- 1 root root 6952 Mar 28 12:05 nf_nat_irc.ko
-rw-r--r-- 1 root root 32576 Mar 28 12:05 nf_nat.ko
-rw-r--r-- 1 root root 5508 Mar 28 12:05 nf_nat_redirect.ko
-rw-r--r-- 1 root root 16312 Mar 28 12:05 nf_nat_sip.ko
-rw-r--r-- 1 root root 5444 Mar 28 12:05 nf_nat_tftp.ko
-rw-r--r-- 1 root root 15320 Mar 28 12:05 nfnetlink_acct.ko
-rw-r--r-- 1 root root 15408 Mar 28 12:05 nfnetlink.ko
-rw-r--r-- 1 root root 22496 Mar 28 12:05 nfnetlink_log.ko
-rw-r--r-- 1 root root 25012 Mar 28 12:05 nfnetlink_queue.ko
-rw-r--r-- 1 root root 6004 Mar 28 12:05 xt_nfacct.ko
-rw-r--r-- 1 root root 5256 Mar 28 12:05 xt_NFLOG.ko
-rw-r--r-- 1 root root 8508 Mar 28 12:05 xt_NFQUEUE.ko
Alles anzeigen
danke
Hi Gemeinde,
ich will vom frontend ufw weg und mich dem "richtigen" sichern widmen.
Dafuer wollte ich nftables benutzen, die ja seit debian stretch standart sind und die "alten" iptables abloesen sollen.
Leider scheint raspbian stretch(lite vom 2018-03-13) keine nftbales von haus aus mitzubringen. Ich habe im inet nur 2 sachen gefunden...
hier ausm forum Raspian Stretch -> Absichern -> IPTables gibts ja nicht mehr :-(
:? keine ahnung warum er nftables hat
und den https://github.com/raspberrypi/linux/issues/2177
wo es darauf hinauslaeuft sich einen custom kernel zu erstellen/installieren. (was ich nicht moechte)
ich wuerd gern wissen was nun stimmt ... oder am besten eine art tabelle mit aenderungen des kernels raspbian / debian...
danke
"Es nennt sich Stromkreis, der fehlt im Bezug zum RPi.
Im Prinzip ist Dein weiteres Vorgehen doch ganz einfach. Du fragst Neueinsteiger per PN ob er noch so einen Adapter rumliegen hat"
Sorry, der Pi hat sein eigenes Netzteil 5V und ja war auch mein erster Gedanke ihn darum zu bitten,
ABER ich werde keine 230V schalten bevor ich hier nicht das OK dazu bekomme.
"Nein, damit killst du dir den Pi! Die übliche Lösung ist, die Eingänge der Platine vom Pi über Transistoren zu schalten.
5 V mag der Pi nicht und mit 3,3 Volt kommen die Relais-Eingänge nicht klar."
Genau hier habe ich Schwierigkeiten, wenn ich dem Relais über IN1,2 mit 3,3V ein High sende, könnte ich ja noch verstehen, dass der Chip auf dem Relais nicht ausgelöst wird.
Aber dass er dann mit 5v antwortet, um mir den Pi zu zerschiessen, macht für mich keinen Sinn(muss nichts heissen).
"N --- Lampe
L --- Relais --- Lampe
Gleiches gilt für den kleinen Ventilator.
GND --- Venti
Vcc --- Relais --- Venti"
Das habe ich glaube ich nun verstanden, da die Phase die Stormzuführende leitung ist, sollte diese am Relais abeklemmt werden,
um auch zu verhindern dass das Gerät dauerhaft unter strom steht.
@flyppo
"Bis auf die Ansteuerung der Relaisplatine sehe ich keinen Fehler, sollte so funktionieren."
wie.. du widersprichst der meinung der anderen ...?
"auch wenn’s funktioniert. Mit einem solchen Platinchen würde ich nicht unbedingt 230V schalten...Eine schön isolierte Funksteckdose (433Mhz oder WLan) tut‘s nicht?"
Omg.. ich war so fixiert auf die Idee ein Relais zu benutzen, dass ich mir die alternativen garnicht angeschaut habe..
Ich hab einen Raspbee und mir nun eine Osram plug + zigbee steckdose bestellt, empfinde ich fuer 230V sicherer, aber dennoch möchte ich es gerne verstehen und mit 12v umsetzen.
ich komm wieder wenn grundwissen da ist .. und sitzt
ansich würd ich gern auch mal so ne einbauschiene haben mit vorsicherungen etc.
Auf jedenfall Danke ich euch für die teilnahme hier.. klar gibt es 1mio beiträge zu dem thema und es ist nervig wenn man es verstanden hat,
für andere ist es eine überflutung mit weit auseinandergehenden meinungen.
du wirst weinen Neueinsteiger aber genau das hatte ich mir vorher angeschaut und gehofft es umgehen zu koennen, wenn ich das relais ueber ein eigenes netzteil(5v) betreibe. Vielen dank fuer deine Meine Projekte . Das ist eine Goldgrube
naja dann hab ich es doch nicht verstanden und muss nochmal schauen.
Hi Gemeinde,
ich wuerde gerne einen pc luefter(12v) und einen richtigen tischventilator(230V) mit meinen raspberry pi an und ausschalten.
Als Relais soll dieses verwendet werden
https://www.ebay.de/itm/2-Kanal-Re…KQAAOSwJtdaD18t
Nun habe ich mich etwas eingelesen und sowas wie ein schaltplan erstellt und wuerde gerne wissen, ob das so in ordnung geht
Schwarz = Minus GND
Rot = VCC +
Braun = IN2
Gelb = In1
Ist mein erstes mal da will ich keine fehler machen
gruesse
Hej Gnom ich fuehl mich ja sowas von verstanden xD
Genau deshalb faend ich es auch gut ein paar Messergergebnisse zu erhalten.
Ich hab mir nun 2x BME280 und 2x GY-BMP280 (gleicher chip anderes modul) bestellt und werde es damit mal versuchen.
Die Farnell: Differenzdrucksensor en verstehe ich nicht. Ich glaube, dass ist ein ganz anderer Einsatzzweck.
Die 2 direkten Anschlüsse deuten daruf hin, dass man dort ein gas oder liquid per schlauch anschliessen soll. Sowas hat mein pc leider nicht xD
ps. ich bau mir seit jahren meine pc gehäuse selber und achte dort schon auf sowas wie luftdichtigkeit, airstream.
Ich glaube auch nicht, dass ich die da extreme aenderungen erhalten werde ... aber ich denke 1-3 grad verbesserung mit weniger lüfterleistung wird wohl drin sein.
Und natürlich das Wissen ob ein über-unterdruck da ist und wie stark dieser ist
Wow vielen Dank euch allen. Ich hatte mal gelesen, dass ein leichter überdruck gut sei um den staub aus dem gehäuse rauszuhalten, aber mir geht es eher um lüfteroptimierung.
Ist halt kein einfaches thema wenn man vorher luftdruck nur vom fahrrad auto kennt.
Werde wohl ein paar tage brauchen um eure vorschläge durchzugooglen
Zitat Lutz
"In welchen Größenordnungen glaubst du, dass der Druckunterschied sich bewegen wird? Prinzipiell sollten zwei BME280 das doch leisten können ... Wobei, Sparkfun schreibt was von "absolute accuracy of 100Pa" (1hPa) - ob das reicht?"
hej vielen Dank. Deine Frage hat mich schon direkt ein Stück weiter gebracht
so ein durchschnitss-pc -üfter scheint 3mmH₂O zu liefern, was ca 30 Pa entspricht.
Bei 5 verbauten Lüftern würde ich so ca. ein max Druck von 150Pa erzeugen können, da sie aber selbst geblockt werden vom radiator, lüftungsgitter etc und nie auf full power laufen ... wird wohl die messspanne zwischen -70 - +70Pa liegen.
Ich werd mir deinen vorgeschlagenen Sensor mal genau aunschauen Vielen Dank nochmal.
was ist denn dein genaues Ziel?
Ich will den den Unter/Überdurck im gehäuse messen und festhalten
Willst du damit überprüfen ob die Lüfter im Gehäuse im Betrieb sind?
Nein aber die Lüfter werden dann indivudell nach den Druckmessungen eingestellt.
Über oder Unterdruck in Bezug auf den Druck außerhalb des Gehäuses?
Da bin ich mir nicht sicher aber ich glaube ja. den Über/Unterdruck im gehäuse im verhältniss zu ausserhalb.
Hallo Gemeinde,
ich würde gerne den Druck in meinem PC-gehäuse messen und dadurch herausfinden,
ob ein Unterdruck oder ein Oberdruck exestiert und in welcher Stärke.
Ich bin mir leider auch nach Recherche nicht sicher(sehr unsicher), welche Art von Sensor(barometer, manometer[realtiv, aboslout])
für dieses vorhaben gebraucht wird.
Mit Differenzdrucksensoren aus der Schornsteinüberprüfung sollte es gehen, aber diese kosten 1500E+.
vieleicht hat jemand sowas schon umgesetzt und ich finde es nur nicht :?
Oder ist nicht möglich unter 1500?
mfg
ich hab den DresdenElektronik (Raspbee) seit jahren im einstatz und bin sehr unzufrieden.
Ich habe es nicht geschaft, ihn ohne eine desktop umgebung(X) laufen zu lassen bzw. laeuft er jetzt im virtuellen desktop.
Vor ein paar jahren hab ich angefragt wie es mit der weiterentwicklung aussieht.. antwort: viel zu tun sry vieleicht irgentwann mal.
die steuerung per json funktioniert nach einrichtung sehr gut. die steuerung per webhttp ist ok.
ich hab keine erfahrung mit der HUE-Bridge aber den Raspbee wuerde ich mir kein 2tes mal kaufen.
ich hab nur den raspberry2 aber beim 3er model muss man wohl auch das komplette bluetooth abschalten damit der raspbee funktioniert.
hi forum is back nice sieht echt modern aus
vielen dank fuer die antworten
ne link geht leider nicht auch nicht ueber icon dann in der liste auf 24
aber genau darum geht es "GPIO-Kabel aus Rollen"
es waere echt nett wenn du mir eine qualitaetsrolle verlinken koenntest.
Hi und Danke
ich glaub ich bin hier richtig
hier mal einige beispiele, fuer kabel, die fuer mich gleich sind...
https://www.rasppishop.de/10er-Set-Jumpe…ecker-fuer-GPIO
also eigentlich alle "gpio kabel raspberry" die ich gekauft und so per suche gefunden habe sind gleich...
was immer angegeben ist ... laenge .. steckerart...
was mir bei der suche helfen wuerde kabeldurchmesser, abschirmungsart , kernart
Ich moechte ein "gpio kabel raspberry" mit mehr als 75cm kaufen.
Ich moechte bestenfalls selbst die laenge bestimmen.
Und macht euch keine sorge um die laenge es laeuft alles, nur im moment ist es 50cm kabel an 20cm kabel an 50cm kabel ...tbc
Hi Gemeinde,
ich habe leider von kabeln 0 ahnung dennoch wuerde ich gern meine ewig langen steckbruecken male femlae male austauschen.
ich hab so ein normales gpio kabel genommen und kann dort den stecker und das gecrimpte loesen koennen und auf ein anderes kabel uebertragen. Nur finde ich leider keine spezifikation zu gpio kabeln ich hatte dann als einziges rauslesen koennen 26 awg was ich auch dann bestellt hatte nur ist 26awg scheinbar duenner als das normale :?
kann mit jemand bitte sagen welches kabel ich exakt brauche am besten gleich als 5-10 m rolle?
mfg
ich kann zwar nicht wirklich python, aber ich wuerde es so versuchen
import time
import sys, os
os.system('sudo vcgencmd display_power 1"')
time.sleep(180.0)
os.system('sudo vcgencmd display_power 0"')
ich weiss nichts genaues, aber es sieht wohl so auf das firefox beschlossen hat dier verbindung "http und password" als unsicher einzustufen..
es soll wohl schon ein bug report und genervte admins geben...
Ich begreif es nicht...
lustige bemerkung den c:\\ hatte ich auch gegoogelt, hatte das doppelte \\ aber fuer einen schreibfeheler gehalten xD
leider funktioniert es nicht wirklich im test unter windows linux noch nicht versucht.
was passiert er erstellt einen c:\\downlaod folder mehr aber auch nicht :*(
hier mal die meine umsetztung deines codes...
#declare where to download
if os.name == 'nt':
# Windows
downloadpfad = 'C:\\downloads\\'
thefuckingslash = '\\'
else:
# Alle anderen, Linux, Mac, ...
downloadpfad = '/home/user/podcasts/'
thefuckingslash = '/'
if not os.path.exists(downloadpfad):
# Verzeichnis erstellen, falls nicht existent
os.mkdir(downloadpfad)
.....
if not os.path.exists(tablename):
os.makedirs(tablename)
urllib.urlretrieve ("%s" % dllink , "{}{}{}{}.mp3" .format(downloadpfad,tablename,thefuckingslash,titleohnesonder))
.....
Alles anzeigen
und nochmal komplett
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sqlite3 as lite
import sys
import feedparser
import re #fuer replace string
import argparse #startparameter
import urllib #downlaoder
import os #ordnerersteller
from time import gmtime, strftime
mypodcasts = [
'error dummy',
'http://ulm.ccc.de/dev/radio/podcast.xml',
'http://www.bitsundso.de/feed/',
'http://feeds.feedburner.com/binaergewitter-podcast',
'http://alternativlos.org/alternativlos.rss',
'http://linux-podcast.de/feed/ogg/',
'http://www.cczwei.de/rss_issues_all.php',
'http://feeds.feedburner.com/Geek-weekde',
'http://workingdraft.de/feed/',
'https://feeds.metaebene.me/lnp/m4a',
'http://feeds.feedburner.com/datenschorle',
'http://feeds.metaebene.me/freakshow/m4a',
'https://nerds.fm/feed/m4a/'
]
#declare where to download
if os.name == 'nt':
# Windows
downloadpfad = 'C:\\downloads\\'
thefuckingslash = '\\'
else:
# Alle anderen, Linux, Mac, ...
downloadpfad = '/home/user/podcasts/'
thefuckingslash = '/'
if not os.path.exists(downloadpfad):
# Verzeichnis erstellen, falls nicht existent
os.mkdir(downloadpfad)
i = 0
i2 = 0
anzahlanfeeds = len(mypodcasts)
dbname = 'fallbackdbname'
#strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())
#'Thu, 28 Jun 2001 14:17:15 +0000'
mon = strftime("%b", gmtime())
year = strftime("%Y", gmtime())
parser = argparse.ArgumentParser(description="Technical right under moral purpose Grabber")
parser.add_argument("-a", '--all', help='Erstellt tables, updated und downlaoded den aktuellen monat',dest="all", action='store_true')
parser.add_argument("-c", '--create', help='Erstellt/updated tables',dest="create", action='store_true')
parser.add_argument("-del", '--delete', help='Loescht alle tables',dest="delete", action='store_true')
parser.add_argument("-u", '--update', help='update only der vorhandenen tabellen',dest="update", action='store_true')
parser.add_argument("-o", '--output', help='output von tablname', dest="table")
parser.add_argument("-d", '--download', help='Downlaod der inhalte per like suche durch die released column ',dest="dlzeitraum", action='store')
args = parser.parse_args()
con = lite.connect('podcast.db')
#entfernt alle sonderzeichen benoetigt fuer feedtitel_2_tablename
def replace222(tablename):
tablename = (" ".join(re.findall(r"[A-Za-z0-9]*", tablename))).replace(" ","")
return tablename
#table erstellen mit podcastnamen benoetigt fuer feedtitel_2_tablename
def erstelle_table(dbname):
with con:
cur = con.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS %s (Id INTEGER, title varchar[200], released varchar[200],podcastnamet varchar[200], downloadurl varchar[200] UNIQUE)" % dbname)
#nimmt alle feeds aus dem array mypodcasts und schreibt tables mit feed title name ohene sonderzeichen
def feedtitel_2_tablename():
i =0
podcasturl = 'fallback for error' , i
while i < anzahlanfeeds:
try:
podcasturl = mypodcasts[i]
zwischenspeicherpodcastsurl = feedparser.parse(podcasturl)
feed = zwischenspeicherpodcastsurl['feed']
title = feed['title']
titletable = replace222(title)
erstelle_table(titletable)
print i
print titletable
i += 1
except:
print "Fehler in ", podcasturl
i += 1
#feedtitel_2_tablename()
#loescht die tables
def tableloeschenall():
cursor = con.cursor()
tables = list(cursor.execute("select name from sqlite_master where type is 'table'"))
cursor.executescript(';'.join(["drop table if exists %s" %i for i in tables]))
#tableloeschenall()
#geht das array mit podcasts durch und schreibt die inhalte in die tables
def fill_or_update_podcast_sql_tables():
with con:
i = 0
i2 = 0
while i < anzahlanfeeds:
try:
tableohneszeichen = 'fallback for error' , i
podcasturl = mypodcasts[i]
zwischenspeicherpodcastsurl = feedparser.parse(podcasturl)
anzahlanfeedszwpeicher = len(zwischenspeicherpodcastsurl['entries'])
titletable = zwischenspeicherpodcastsurl['feed']['title']
tableohneszeichen = replace222(titletable)
print "update", tableohneszeichen
while i2 < anzahlanfeedszwpeicher:
status = 0
title = 'this'
published = 'is not'
dllink = 'important'
e=zwischenspeicherpodcastsurl.entries[i2]
title = zwischenspeicherpodcastsurl.entries[i2]['title']
published = zwischenspeicherpodcastsurl['entries'][i2]['published']
dllink = e.enclosures[0]['href']
titletable = zwischenspeicherpodcastsurl['feed']['title']
tableohneszeichen = replace222(titletable)
podcast = tableohneszeichen
cur = con.cursor()
cur.execute("INSERT OR IGNORE into %s (Id, title, released,podcastnamet, downloadurl) values (?, ?, ?, ?, ?)" % podcast ,
(status, title, published, podcast, dllink))
i2 += 1
i += 1
i2 = 0
except:
print "Fehler in ", tableohneszeichen
i += 1
#fill_or_update_podcast_sql_tables()
#gibt table dbname aus
def output_content(dbname):
with con:
cur = con.cursor()
for row in cur.execute('select * from {};' .format(dbname) ):
zeileintable = row
print zeileintable
#output_content('WorkingssDrafts')
#sucht in table in column released mit like searchtime und switch status 0/1
def download_content(searchtime):
with con:
cur = con.cursor()
i = 0
cur.execute("SELECT name FROM sqlite_master WHERE type='table';")
anzahltables = len(cur.fetchall())
print anzahltables , 'tables erkannt'
cur.execute("SELECT name FROM sqlite_master WHERE type='table';")
alltablearray = cur.fetchall()
print alltablearray
while i < anzahltables:
try:
tablesignleraw = 'fallback for error' , i
tablesignle = alltablearray[i]
tablesignleraw = tablesignle[0]
print tablesignleraw
for row in cur.execute('select * from {} where Id ="0" and released like "{}";' .format(tablesignleraw, searchtime) ):
status = row[0]
title = row[1]
tablename = row[3]
dllink = row[4]
titleohnesonder = replace222(title)
print 'downloading', titleohnesonder
if not os.path.exists(tablename):
os.makedirs(tablename)
urllib.urlretrieve ("%s" % dllink , "{}{}{}{}.mp3" .format(downloadpfad,tablename,thefuckingslash,titleohnesonder))
i += 1
cur.execute("UPDATE {} SET Id = '1' where released like '{}';" .format(tablesignleraw, searchtime) )
except:
print "Fehler in ", tablesignleraw
i += 1
#download_content('%15%Sep%2016%')
#startparameter per args bekommen funktionen
if args.all:
print 'option -a'
feedtitel_2_tablename()
fill_or_update_podcast_sql_tables()
thismonth = "%{}%{}%" .format(mon,year)
download_content(thismonth)
elif args.create:
print 'option -c'
feedtitel_2_tablename()
elif args.delete:
print 'option -del'
tableloeschenall()
elif args.update:
print 'option -u'
fill_or_update_podcast_sql_tables()
elif args.table:
print 'option -o'
output_content(args.table)
elif args.dlzeitraum:
string = args.dlzeitraum
print 'option -d {}' .format(string)
download_content('{}' .format(string))
else:
with con:
print 'Aktuelle tables'
cur = con.cursor()
for row in cur.execute("SELECT name FROM sqlite_master WHERE type='table';"):
print row[0]
start = """
no option chosen
Usage add some pocasts into this file under "mypodcasts" then
-a Erstellt tables, updated und downloaded den aktuellen monat
-c Erstellt/updated tables
-del Loescht alle tables
-u Fill or updates tables
-o Print table exp. -o PuertossPatidas
-d Download content exp. -d %{}%{}%""" .format(mon,year)
print start
print 'Jan/Feb/Mar/Apr/May/Jun/Jul/Aug/Sep/Oct/Nov/Dec'
con.close()
Alles anzeigen
Automatisch zusammengefügt:
ach ich bin ja ein idiot natuerlich gehts es so nicht sorry
er versucht ja in der if path exists abfrage im eigenden script ordner zu schauen
so ist es richtig und laeuft 1a
zwspeicherpfad = "{}{}" .format(downloadpfad,tablename)
if not os.path.exists(zwspeicherpfad):
os.makedirs(zwspeicherpfad)
urllib.urlretrieve ("%s" % dllink , "{}{}{}{}.mp3" .format(downloadpfad,tablename,thefuckingslash,titleohnesonder))
complete
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sqlite3 as lite
import sys
import feedparser
import re #fuer replace string
import argparse #startparameter
import urllib #downlaoder
import os #ordnerersteller
from time import gmtime, strftime
mypodcasts = [
'error dummy',
'http://www.cczwei.de/rss_issues_all.php',
'http://feeds.feedburner.com/Geek-weekde',
'http://workingdraft.de/feed/',
'https://feeds.metaebene.me/lnp/m4a',
'http://feeds.feedburner.com/datenschorle',
'http://feeds.metaebene.me/freakshow/m4a',
'https://nerds.fm/feed/m4a/'
]
#declare where to download
if os.name == 'nt':
# Windows
downloadpfad = 'C:\\downloads\\'
thefuckingslash = '\\'
else:
# Alle anderen, Linux, Mac, ...
downloadpfad = '/home/user/podcasts/'
thefuckingslash = '/'
if not os.path.exists(downloadpfad):
# Verzeichnis erstellen, falls nicht existent
os.mkdir(downloadpfad)
i = 0
i2 = 0
anzahlanfeeds = len(mypodcasts)
dbname = 'fallbackdbname'
#strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())
#'Thu, 28 Jun 2001 14:17:15 +0000'
mon = strftime("%b", gmtime())
year = strftime("%Y", gmtime())
parser = argparse.ArgumentParser(description="Technical right under moral purpose Grabber")
parser.add_argument("-a", '--all', help='Erstellt tables, updated und downlaoded den aktuellen monat',dest="all", action='store_true')
parser.add_argument("-c", '--create', help='Erstellt/updated tables',dest="create", action='store_true')
parser.add_argument("-del", '--delete', help='Loescht alle tables',dest="delete", action='store_true')
parser.add_argument("-u", '--update', help='update only der vorhandenen tabellen',dest="update", action='store_true')
parser.add_argument("-o", '--output', help='output von tablname', dest="table")
parser.add_argument("-d", '--download', help='Downlaod der inhalte per like suche durch die released column ',dest="dlzeitraum", action='store')
args = parser.parse_args()
con = lite.connect('podcast.db')
#entfernt alle sonderzeichen benoetigt fuer feedtitel_2_tablename
def replace222(tablename):
tablename = (" ".join(re.findall(r"[A-Za-z0-9]*", tablename))).replace(" ","")
return tablename
#table erstellen mit podcastnamen benoetigt fuer feedtitel_2_tablename
def erstelle_table(dbname):
with con:
cur = con.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS %s (Id INTEGER, title varchar[200], released varchar[200],podcastnamet varchar[200], downloadurl varchar[200] UNIQUE)" % dbname)
#nimmt alle feeds aus dem array mypodcasts und schreibt tables mit feed title name ohene sonderzeichen
def feedtitel_2_tablename():
i =0
podcasturl = 'fallback for error' , i
while i < anzahlanfeeds:
try:
podcasturl = mypodcasts[i]
zwischenspeicherpodcastsurl = feedparser.parse(podcasturl)
feed = zwischenspeicherpodcastsurl['feed']
title = feed['title']
titletable = replace222(title)
erstelle_table(titletable)
print i
print titletable
i += 1
except:
print "Fehler in ", podcasturl
i += 1
#feedtitel_2_tablename()
#loescht die tables
def tableloeschenall():
cursor = con.cursor()
tables = list(cursor.execute("select name from sqlite_master where type is 'table'"))
cursor.executescript(';'.join(["drop table if exists %s" %i for i in tables]))
#tableloeschenall()
#geht das array mit podcasts durch und schreibt die inhalte in die tables
def fill_or_update_podcast_sql_tables():
with con:
i = 0
i2 = 0
while i < anzahlanfeeds:
try:
tableohneszeichen = 'fallback for error' , i
podcasturl = mypodcasts[i]
zwischenspeicherpodcastsurl = feedparser.parse(podcasturl)
anzahlanfeedszwpeicher = len(zwischenspeicherpodcastsurl['entries'])
titletable = zwischenspeicherpodcastsurl['feed']['title']
tableohneszeichen = replace222(titletable)
print "update", tableohneszeichen
while i2 < anzahlanfeedszwpeicher:
status = 0
title = 'this'
published = 'is not'
dllink = 'important'
e=zwischenspeicherpodcastsurl.entries[i2]
title = zwischenspeicherpodcastsurl.entries[i2]['title']
published = zwischenspeicherpodcastsurl['entries'][i2]['published']
dllink = e.enclosures[0]['href']
titletable = zwischenspeicherpodcastsurl['feed']['title']
tableohneszeichen = replace222(titletable)
podcast = tableohneszeichen
cur = con.cursor()
cur.execute("INSERT OR IGNORE into %s (Id, title, released,podcastnamet, downloadurl) values (?, ?, ?, ?, ?)" % podcast ,
(status, title, published, podcast, dllink))
i2 += 1
i += 1
i2 = 0
except:
print "Fehler in ", tableohneszeichen
i += 1
#fill_or_update_podcast_sql_tables()
#gibt table dbname aus
def output_content(dbname):
with con:
cur = con.cursor()
for row in cur.execute('select * from {};' .format(dbname) ):
zeileintable = row
print zeileintable
#output_content('WorkingssDrafts')
#sucht in table in column released mit like searchtime und switch status 0/1
def download_content(searchtime):
with con:
cur = con.cursor()
i = 0
cur.execute("SELECT name FROM sqlite_master WHERE type='table';")
anzahltables = len(cur.fetchall())
print anzahltables , 'tables erkannt'
cur.execute("SELECT name FROM sqlite_master WHERE type='table';")
alltablearray = cur.fetchall()
print alltablearray
while i < anzahltables:
try:
tablesignleraw = 'fallback for error' , i
tablesignle = alltablearray[i]
tablesignleraw = tablesignle[0]
print tablesignleraw
for row in cur.execute('select * from {} where Id ="0" and released like "{}";' .format(tablesignleraw, searchtime) ):
status = row[0]
title = row[1]
tablename = row[3]
dllink = row[4]
titleohnesonder = replace222(title)
print 'downloading', titleohnesonder
zwspeicherpfad = "{}{}" .format(downloadpfad,tablename)
if not os.path.exists(zwspeicherpfad):
os.makedirs(zwspeicherpfad)
urllib.urlretrieve ("%s" % dllink , "{}{}{}{}.mp3" .format(downloadpfad,tablename,thefuckingslash,titleohnesonder))
i += 1
cur.execute("UPDATE {} SET Id = '1' where released like '{}';" .format(tablesignleraw, searchtime) )
except:
print "Fehler in ", tablesignleraw
i += 1
#download_content('%15%Sep%2016%')
#startparameter per args bekommen funktionen
if args.all:
print 'option -a'
feedtitel_2_tablename()
fill_or_update_podcast_sql_tables()
thismonth = "%{}%{}%" .format(mon,year)
download_content(thismonth)
elif args.create:
print 'option -c'
feedtitel_2_tablename()
elif args.delete:
print 'option -del'
tableloeschenall()
elif args.update:
print 'option -u'
fill_or_update_podcast_sql_tables()
elif args.table:
print 'option -o'
output_content(args.table)
elif args.dlzeitraum:
string = args.dlzeitraum
print 'option -d {}' .format(string)
download_content('{}' .format(string))
else:
with con:
print 'Aktuelle tables'
cur = con.cursor()
for row in cur.execute("SELECT name FROM sqlite_master WHERE type='table';"):
print row[0]
start = """
no option chosen
Usage add some pocasts into this file under "mypodcasts" then
-a Erstellt tables, updated und downloaded den aktuellen monat
-c Erstellt/updated tables
-del Loescht alle tables
-u Fill or updates tables
-o Print table exp. -o PuertossPatidas
-d Download content exp. -d %{}%{}%""" .format(mon,year)
print start
print 'Jan/Feb/Mar/Apr/May/Jun/Jul/Aug/Sep/Oct/Nov/Dec'
con.close()
Alles anzeigen
schade :*(
ich hab kein plan ich lass dir mal meine notes da so wie es bei mir laeuft...
//samba windowsfreigabe
sudo apt-get install samba samba-common-bin
cd ~
mentor@Bunk3r:~$ mkdir Bunk3rf
sudo nano /etc/samba/smb.conf
//try add
; interfaces = 10.11.12.0/8 wlan0
//inhalt einfuegen unter gloabl
security = user
encrypt passwords = yes
//an das ende
[Bunk3r]
path = /home/mentor/Bunk3rf
writeable = yes
guest ok = no
//ende
sudo smbpasswd -a mentor
pw=thisisapasswordandneedstobechanged
sudo /etc/init.d/samba restart
//ev samba in logs einrtagen
ich hatte auch mal sowas, ich glaube deine externe platte ist vieleicht nicht linux formatiert, versuch mal
sudo apt-get install ntfs-3g