Das längste Thema

  • Werden mittlerweile sicher schon mehr Domains sein. Und Glue-Records gibt es auch noch. DNSSEC verbraucht sicher ebenfalls ein paar KB.

    btw: Was, nur 520 IDN-Domains bei .co.at? Ich halte also mehr als 2‰ der IDN-Domains bei .co.at? :D

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Sagt mal Leute wäre es möglich nur einen Teil einer site.php mit einem Passwort zu versehen. Also Sidebar, Infotext, etc. soll alles angezeigt werden, aber eben eine Tabelle und die Option die werte zu editieren nicht, stattdessen ein Feld für die Eingabe des Passworts. Nutzername ist nicht mal zwingend notwendig.

    Sind keine super sensiblen Daten, es geht nur um Messwerte fürs Aquarium, also keine Kreditkarten etc., die sollten nicht einfach von jemand anderem editiert und bearbeitet werden können. Sicher sollte es natürlich dennoch sein - haha

    Vielleicht hat ja wer von euch eine Idee, oder vielleicht existiert sowas auch schon und ich bin nur zu doof es zu finden xD

    Meine Produkte: definitiv zu viele, RS, VPS, Domains, Webhosting, ...

  • Sagt mal Leute wäre es möglich nur einen Teil einer site.php mit einem Passwort zu versehen. Also Sidebar, Infotext, etc. soll alles angezeigt werden, aber eben eine Tabelle und die Option die werte zu editieren nicht, stattdessen ein Feld für die Eingabe des Passworts. Nutzername ist nicht mal zwingend notwendig.

    Sind keine super sensiblen Daten, es geht nur um Messwerte fürs Aquarium, also keine Kreditkarten etc., die sollten nicht einfach von jemand anderem editiert und bearbeitet werden können. Sicher sollte es natürlich dennoch sein - haha

    Vielleicht hat ja wer von euch eine Idee, oder vielleicht existiert sowas auch schon und ich bin nur zu doof es zu finden xD

    Du könntest das recht simple mit php sessions umsetzen.

    https://web-development.github.io/session/session-und-login/

    Wenn keine Session exestiert, lässt du die HTML Login Form anzeigen und wenn Session exestiert wird die gewünschte Tabelle/Werte ausgegeben.

  • hat schon mal jemand sowas erlebt ...

    ich hatte vor x Jahren mal mir ein Backup Programm¹ in C/C++ gestrickt;

    und bei der Entwicklungsumgeb. kann man 2 Builds machen

    einen mit Debug-Infos und einen optimiert als Release;

    ich hatte da mal was ausgebessert, und beim Neu übersetzen

    -> Linkfehler, er findet was nicht;

    dann, "ja wieso", ein Debug-Buld, siehe da es geht;

    "hä, was hats da?"

    dann hab ich mal die Bibliotheken im Verz. angesehen,

    und dann die Erleuchtung, die Release Build Bibliotheken waren älter ...

    Problem gelöst; und jetzt kann ich das Programm erweitern;

    mit einem automatisiertes als Powershell Skript scheitere ich;

    dauert x mal so lange - statt 1 h rund 6-7 h, und zu doof

    mit Files welche Sonderzeichen im Filenamen haben;

    ¹ das Backup Programm ist f. Windows, hat eine GUI, und dabei wählt man ganze Verzeichnisse eines

    Laufwerks und gibt einen Zielpfad an; und im Hintergrund, werden mit Hilfe von einer Hash-Datenbank

    nur die Files kopiert, welche noch nicht in der Hash-Datenbank sind, oder solche, deren Hash-Wert sich

    geändert hat; diese werden dann als weitere Generationen im Backup-Verz. angelegt;

    vlt weiss jemand was mit dem Powershell-Versuch was anzufangen ...

    Spoiler anzeigen

    <#

    .SYNOPSIS

    Backup Utility v1.0

    Copyright (c) Apr./May 2021 by Walter H.

    .DESCRIPTION

    Utility for backing up files.

    This is done by using a database,

    the database format is just a CSV-File with 4 columns:

    - Name: the filename

    - Instance: the increment instance of the file

    - Hash: the filehash[sha1]

    - Size: the filesize in Bytes

    .LINK

    http://www.mathemainzel.info/progstodwnld.shtml#flebkup

    .PARAMETER Path

    Opens the path to backup the files from. They will be backed up to the folder <Path>._BKUP

    .INPUTS

    None. You cannot pipe objects to Bkup.ps1.

    .OUTPUTS

    None. You cannot use pipe for other cmdlets.

    .EXAMPLE

    .\Bkup.ps1 -Path E:\_FILES

    Does a backup of the whole folder and all its subfolders of E:\_FILES to the folder E:\_FILES._BKUP

    #>

    Param (

    [Parameter(Mandatory=$false)][String]$Path = $null

    )

    # https://9to5it.com/using-psobject-store-data-powershell/

    Function Get-DestPath( [String]$srcPath, [String]$destPath, [Byte]$itemInst, [String]$itemName ) {

    $fmtdDate = ( ( ( Get-Date ).AddDays( -1 ) ).ToString( "ddMMMyyyy" ) ).ToLower( )

    $fmtdInst = ( $itemInst ).ToString( "0000" )

    Return ( $destPath + "\bkup" + $fmtdDate + "\" + $fmtdInst + "\" + $itemName.Substring( $srcPath.Length + 1 ) )

    }

    Write-Host "Backup Utility v1.0" -ForegroundColor White

    Write-Host "Copyright (c) Apr./May 2021 by Walter H." -ForegroundColor White

    Write-Host ""

    $csvfile = $null

    $logfile = $null

    $data = $null

    $destPath = ""

    $srcPath = ""

    $paramsValid = $false

    if ( $Path -eq $null ) {

    Write-Host "Bkup.ps1: No path specified." -ForegroundColor Yellow

    Write-Host ""

    } else {

    $destPath = $Path + "._BKUP"

    $srcPath = $Path

    if ( ( Test-Path $destPath -PathType Container ) -and ( Test-Path $srcPath -PathType Container ) ) {

    $csvfile = $destPath + "\_HASHDTA.csv"

    $logfile = $destPath + "\_BACKUP.log"

    if ( Test-Path $csvfile -PathType Leaf ) {

    $data = Import-Csv -Path $csvfile

    } else {

    $data = @( )

    }

    $paramsValid = $true

    } else {

    Write-Host "Bkup.ps1: Either source (path='$srcPath')" -ForegroundColor Red

    Write-Host " or destination (path='$destPath') does not exist." -ForegroundColor Red

    Write-Host ""

    }

    }

    if ( $paramsValid -eq $true ) {

    $cnt = 0

    $cntBkup = 0

    $sze = 0

    $szeBkup = 0

    $beginTime = Get-Date

    $beginTimeStr = $beginTime.ToString( "MMM, d yyyy; HH:mm:ss,fff zzz" )

    Add-Content -Path $logfile -Value "Begin: $beginTimeStr"

    Add-Content -Path $logfile -Value "------------------------------------------------------------------------"

    foreach ( $file in ( Get-ChildItem -Path $srcPath\ -File -Force -Recurse ) ) {

    $isNew = $false

    $hasChanged = $false

    $fileName = $file.FullName

    $fileSize = $file.Length

    $fileAttr = $file.Attributes

    $fileTime = $file.LastWriteTime

    $fileHash = ( Get-FileHash -Path ( $file.FullName ) -Algorithm SHA1 ).Hash

    $fileTimeStr = $fileTime.ToString( "dd-MM-yyyy, HH:mm:ss" )

    Add-Content -Path $logfile -Value "[$fileName]: $fileSize Byes; $fileTimeStr;"

    if ( $data -ne $null ) {

    $item = ( $data |Where-Object { ( $_.Name ).ToLower( ) -eq ( $file.FullName ).ToLower( ) } )

    } else {

    $item = $null

    }

    if ( $item -eq $null ) {

    $item = [PSCustomObject]@{

    Name = $fileName

    Instance = [Byte]0

    Hash = $fileHash

    Size = $fileSize

    }

    $data += $item

    $isNew = $true

    } else {

    $itemInst = [Byte]( $item.Instance )

    $itemInst++

    if ( $fileHash -ne $item.Hash ) {

    $item.Instance = $itemInst

    $item.Hash = $fileHash

    $item.Size = $fileSize

    $hasChanged = $true

    }

    }

    $cnt++

    $sze += ( [Math]::Truncate( $item.Size / 1024.0 ) + 1 )

    if ( $isNew -or $hasChanged ) {

    $cntBkup++

    $szeBkup += ( [Math]::Truncate( $item.Size / 1024.0 ) + 1 )

    $srcFname = $item.Name

    $destFname = ( Get-DestPath -srcPath $srcPath -destPath $destPath -itemInst $item.Instance -itemName $item.Name )

    $parent = ( Split-Path -Path $destFname -Parent )

    if ( ( Test-Path $parent -PathType Container ) -eq $false ) {

    ( New-Item $parent -ItemType Directory -Force ) |Out-Null

    }

    $flagStr = "n/a"

    if ( $isNew ) {

    $flagStr = "first"

    }

    if ( $hasChanged ) {

    $flagStr = "next"

    }

    Copy-Item -Path $srcFname -Destination $destFname

    Add-Content -Path $logfile -Value "'$srcFname' -> '$destFname' [$flagStr generation]"

    Add-Content -Path $logfile -Value ""

    }

    # if ( $cnt -gt 100 ) { Break }

    }

    $data |Sort Name |Export-Csv -Path $csvfile -NoTypeInformation

    $endTime = Get-Date

    $endTimeStr = $endTime.ToString( "MMM, d yyyy; HH:mm:ss,fff zzz" )

    Add-Content -Path $logfile -Value "------------------------------------------------------------------------"

    Add-Content -Path $logfile -Value "End: $endTimeStr"

    Add-Content -Path $logfile -Value ""

    $szeBkupM = ( $szeBkup / 1024.0 ).ToString( "0.00" )

    $szeBkupG = ( $szeBkup / 1048576.0 ).ToString( "0.000" )

    $szeM = ( $sze / 1024.0 ).ToString( "0.00" )

    $szeG = ( $sze / 1048576.0 ).ToString( "0.000" )

    Write-Host "Copied: $cntBkup file(s) with $szeBkup kByte(s); $szeBkupM MByte(s); $szeBkupG GByte(s);" -ForegroundColor White

    Write-Host "Verfied: $cnt file(s) with $sze kByte(s); $szeM MByte(s); $szeG GByte(s);" -ForegroundColor White

    Write-Host ""

    Add-Content -Path $logfile -Value "Copied: $cntBkup file(s) with $szeBkup kByte(s); $szeBkupM MByte(s); $szeBkupG GByte(s);"

    Add-Content -Path $logfile -Value "Verfied: $cnt file(s) with $sze kByte(s); $szeM MByte(s); $szeG GByte(s);"

    Add-Content -Path $logfile -Value "========================================================================"

    Add-Content -Path $logfile -Value ""

    $time = [TimeSpan]( $endTime - $beginTime )

    $timeStr = ""

    if ( $time.Days -gt 0 ) {

    $timeStr += $time.Days.ToString( "0" ) + " days "

    }

    $timeStr += $time.Hours.ToString( "0" ) + " h "

    $timeStr += $time.Minutes.ToString( "0" ) + " min "

    $timeStr += $time.Seconds.ToString( "0" ) + "," + $time.Milliseconds.ToString( "000" ) + " sec"

    Write-Host "Begin: $beginTimeStr;"

    Write-Host "End: $endTimeStr;"

    Write-Host ""

    Write-Host "Run-time: $timeStr;"

    Write-Host ""

    }

    Grüße / Greetings

    Walter H.

    RS, VPS, Webhosting - was man halt so braucht;)

  • Lesenswert in diesem Kontext: Why not to use "which"? What to use then?

    Danke für den Link. Lese ich mir mal durch.

    Tatsächlich ist nämlich eines meiner Skripte, in dem ich am Anfang das nötige Vorhandensein (von moosh) mit $(which moosh) prüfe plötzlich gescheitert.

    Im direkten Aufruf klappt es. Beim Aufruf über root-cron nicht.

    Mir ist zwar klar, dass bei Aufruf von root-crons die shell-Umgebung eine andere ist, aber daran alleine kann es nicht liegen, denn in anderen Skripten (auch per root-cron) funktioniert diese Abfrage. Keine Ahnung warum hier nicht.

    Ich werde sowas aber dann in Zukunft besser anders abfragen.

  • Mir ist zwar klar, dass bei Aufruf von root-crons die shell-Umgebung eine andere ist, aber daran alleine kann es nicht liegen, denn in anderen Skripten (auch per root-cron) funktioniert diese Abfrage. Keine Ahnung warum hier nicht.

    Das liegt an der PATH Variable - in Cron ist die recht nackig - wenn man die einstellt, teilweise in den Scripten selbst, läuft alles perfekt.

    Wenn du über der Cron Tabelle ein PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin setzt, passt alles.

  • Ich hab vor ein paar Stunden ein Ubuntu 20.04 Image und zweimal das OpenSUSE Leap Image auf drei Servern installiert (G9, RS 1000). Alles Images von netcup.

    Ubuntu war, wie gewohnt, nach ein paar Minuten fertig. Die beiden OpenSUSE sehen zwar in der Console schon fertig aus (Der Login ist zu sehen), aber ich hab kein root Passwort zugeschickt bekommen, und außerdem steht beim Server dass der reinstall Job noch läuft und ich deshalb garnichts damit tun kann.

    Klar, Support hab ich informiert, aber der wird wahrscheinlich da nicht schnell genug reagieren... weiß jemand nach welcher Zeit diese install Jobs automatisch rausgeschmissen werden? Bilde mir ein das passiert von selbst irgendwann...

  • Das liegt an der PATH Variable - in Cron ist die recht nackig - wenn man die einstellt, teilweise in den Scripten selbst, läuft alles perfekt.

    Wenn du über der Cron Tabelle ein PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin setzt, passt alles.

    Ja, das mit dem PATH via cron war mir schon klar.

    Was mir nicht klar ist, warum in anderen Skripten, die ich auch per cron aufrufe, die identische Abfrage mit which problemlos klappt.

    Da muss ich mal näher reinschauen.