Moderators: Docere, Gordon der Eiserne
Holzmodem wrote:Okay,....
Gut problem ist bei mir gerade nur dass er nichts macht
Alles so eingestellt wie im Tutorial beschrieben, leider tut sich nichts
Holzmodem wrote:Ach die Ordner müssen alle exakt so heißen wie im Tutorial?
Dachte ich könnte den Ordner erstellen wo ich mag und auch nennen. Und ja, Windows Powershell ist installiert gewesen.
DateiPfad eig. auch alle richtig, sogar schon mehrmals überprüft P
Aber mal schauen, ich versuchs noch mal ganz von vorn.
$app = "C:\Steam\SteamApps\common\Life is Feudal Your Own Dedicated Server\ddctd_cm_yo_server.exe"
$arguments = "-worldID 1"
$proclif = "ddctd_cm_yo_server"
$procerror = "werfault"
$p = get-process $proclif
$e = get-process $procerror
if($e -eq $null)
{
if($p -eq $null)
{
Start-Process $app $arguments
}
}
else
{
kill -processname $procerror
kill -processname $proclif
Start-Process $app $arguments
}
@echo off
echo Backup Database 'lif_1'
FOR /F "tokens=1,2,3 delims=/: " %%a in ('Time/T') do set CTIME=%%a%%b%%c
set ZEIT=%CTIME%
set DATUM=%date%
"C:\Program Files\MariaDB 5.5\bin\mysqldump" -uroot -p<your Database Password> lif_1 > c:\lif_tools\backup\lif_1_%DATUM%_%ZEIT%.sql
"C:\Program Files\7-Zip\7z.exe" a -t7z C:\_Stuff\SaveGames\Life_is_Feudal\lif_1_%DATUM%_%ZEIT%.7z "c:\lif_tools\sicherung\lif_1_%DATUM%_%ZEIT%.sql"
del c:\lif_tools\sicherung\lif_1_%DATUM%_%ZEIT%.sql
werden in der Datenbank ebenfals alle Änderungen der Welt gespeichert sprich plazierte Häuser Mauern etc? Und wo genau kann ich bei MariaDB 5.5.39 die gesicherte Datenbank wieder importieren ich habe da nur den Menüpunkt Datenbank SQL Export?
C:\Programme\MariaDB 5.5\bin\mysqldump" -uroot -p<RootPasswort> lif_1 > c:\lif_tools\sicherung\lif_1
"C:\Program Files\7-Zip\7z.exe" a -t7z C:\_Stuff\SaveGames\Life_is_Feudal\lif_1_%DATUM%_%ZEIT%.7z "c:\lif_tools\sicherung\lif_1_%DATUM%_%ZEIT%.sql"
get-process : Es kann kein Prozess mit dem Namen "werfault" gefunden werden. Überprüfen Sie den Prozessname, rufen Sie das Cmdlet erneut auf.
In C:\lif_tools\lif_healthcheck.ps1:7 Zeichen:10
+ $e = get-process $procerror
+ CategoryInfo : ObjectNotFound: (werfault:String) [Get-Process], ProcessCommandException
+ FullyQualifiedErrorId : NoProcessFoundForGivenName,Microsoft.PowerShell.Commands.GetProcessCommand
### edit start ###
$app = "C:\Server\LifeIsFeudalServer\ddctd_cm_yo_server.exe"
$arguments = "-worldID 1"
$port = "28000" # Port the server uses
$serverIP = "127.0.0.1" # server IP (do not change if script runs on same server)
$processLiF = "ddctd_cm_yo_server"
$processError = "werfault"
$log = "C:\Server\Logs\Life_is_Feudal\aliveCheck.txt"
### edit end ###
### email settings start ### comment out this section if not used
# $emailPath = "C:\Server\Tools\send_email.ps1" # path to send_mail script
# $sender = "Primus LiF Status <yourmail@address.com>" # your sender name and email
# $subject = "LiF Server Crash" # what in subject line is shown
# $email = "Your Life is Feudal Server has crashed.`nTime: " + (Get-Date).tostring() # your error message
### email settings end ###
$lifProcess = Get-Process | Where-Object { $_.ProcessName -eq $processLiF }
$errorProcess = Get-Process | Where-Object { $_.ProcessName -eq $processError }
$LiF_response = $lifProcess.Responding
if($lifProcess -eq $null){
echo "Server not running"
# do nothing
}else{
if($lifProcess.mainWindowTitle.Contains("players")){
# Server should be running and ready to connect to, do ping check
$udpClient = New-Object System.Net.Sockets.UdpClient
$pingBuf = New-Object Byte[] -ArgumentList 1
$pingBuf[0] = 14
$udpClient.Connect($serverIP,$port)
$udpClient.Client.ReceiveTimeout=2000
$udpClient.Send($pingBuf,1) | Out-Null
$udpRecIP= New-Object System.Net.IPEndPoint([System.Net.IPAddress]::Any, 0)
try{
$recv = $udpClient.Receive([ref]$udpRecIP)
$pingCheck = "OK"
}
catch{
$pingCheck = "ERROR"
}
if($pingCheck -eq "OK"){
echo "Server is responding."
# do nothing
}else{
# &$emailPath -sender $sender -subject $subject -message $email # send email via mail script; comment out if not used
$error = (Get-Date).tostring() + " Error: Kill LiF-Server and restart."
echo $error
Add-Content $log $error
if($errorProcess -ne $null){ # not equal, therefore errorPorcess exists
kill -processname $processerror
}
kill -processname $processLiF
Start-Process $app $arguments
}
}else{
echo "Server is probably starting."
# do nothing
}
}
echo Sicherung Datenbank 'LiF_1'
for /f "tokens=1-3 delims=. " %%a in ('date/t') do set tag=%%a&set monat=%%b&set jahr=%%c
for /f "tokens=1-3 delims=: " %%d in ('time/t') do set hour=%%d&set minute=%%e
set ZEIT=%hour%%minute%
set DATUM=%jahr%%monat%%tag%
steamcmd +login BENUTZERNAME PASSWORT +force_install_dir C:\Server\LifeIsFeudalServer +app_update 320850 +quit
### edit start ###
$steamUser = "USERNAME" # your Steam username
$steamPassword = "PASSWORD" # your Steam password
$checkPath = "C:\Server\zzz_LifeIsFeudalServer_updatecheck" # path to second LiF installation for check purpose only
$updatePath = "C:\Server\LifeIsFeudalServer" # your actual LiF server path
$steamCMD = "C:\Server\steamcmd\steamcmd.exe" # path to steamCMD.exe
$log = "C:\Server\Logs\Life_is_Feudal\updates.txt" # path to log file; comment line 56 and 63 out if not wanted!
$serverArguments = "-worldID 1" # for starting the right world when server restarts after update
### edit end ###
# build paths for steamCMD
$argumentsCheck = "+login " + $steamUser + " " + $steamPassword + " +force_install_dir " + $checkPath + " +app_update 320850 +quit"
$argumentsDoUpdate = "+login " + $steamUser + " " + $steamPassword + " +force_install_dir " + $updatePath + " +app_update 320850 +quit"
$loginCheck = "Logged in OK" # needed to check if steamCMD has connection
$updateCheck = "already up to date" # needed to check if server is up to date
$processLiF = "ddctd_cm_yo_server" # needed to check if server is running and stop it
$server = $updatePath + "\ddctd_cm_yo_server.exe" # build path for restart
# build steamCMD process to catch its output
$check = New-Object System.Diagnostics.ProcessStartInfo
$check.FileName = $steamCMD
$check.Arguments = $argumentsCheck
$check.UseShellExecute = $false
$check.CreateNoWindow = $true
$check.RedirectStandardOutput = $true
$checkProcess = New-Object System.Diagnostics.Process
$checkProcess.StartInfo = $check
echo "Checking Life is Feudal server for updates."
$checkProcess.Start() | Out-Null # start the process
$checkProcess.WaitForExit() # waits to end process
$checkResult = $checkProcess.StandardOutput.ReadToEnd() # read output from checkProcess
if ($checkResult.Contains($loginCheck)) { # check if connection OK
if ($checkResult.Contains($updateCheck)) { # check output for $updateCheck string
echo "Already up to date!"
$msg = (Get-Date).tostring() + " Server already up to date."
#Add-Content $log $msg # uncomment if you want this info in your log.
} else {
echo "New update available!"
Write-Host "Server is running: " -NoNewLine
$p = Get-Process | Where-Object { $_.ProcessName -eq $processLiF }
$LiF_alive = $p.Responding
if($LiF_alive){
Write-Host "yes"
echo "stopping server"
Stop-Process -processname $ProcessLiF
Wait-Process -name $ProcessLiF
echo "server stopped"
}else{
Write-Host "no"
}
echo "start update"
Start-Process $steamCMD $argumentsDoUpdate -NoNewWindow -Wait # starts actual update
$msg = (Get-Date).tostring() + " Server updated."
Add-Content $log $msg # comment this line out if you want no log file
echo "Starting Life is Feudal server."
Start-Process $server $serverArguments # restarts server
}
}else{
$msg = (Get-Date).tostring() + " steamCMD had no working connection."
Add-Content $log $msg # comment this line out if you want no log file
}
Illnux wrote:Hallo zusammen,
erst mal, vielen Dank SGoldberg! Schöne Anleitung!
Ich hatte jedoch das gleiche Problem wie AliAladin.
Unter Windows Server 2012 Standard bekam ich ebenfalls den "Es kann kein Prozess mit dem Namen "werfault" gefunden werden." Fehler.
Daraufhin hab ich angefangen ein wenig mit deiner Vorlage rumzubasteln.
@echo off
echo Sicherung Datenbank 'LiF_1'
for /f "tokens=1-3 delims=. " %%a in ('date/t') do set tag=%%a&set monat=%%b&set jahr=%%c
for /f "tokens=1-3 delims=: " %%d in ('time/t') do set hour=%%d&set minute=%%e
set ZEIT=%hour%%minute%
set DATUM=%jahr%%monat%%tag%
"C:\Server\MariaDB 5.5(x64)\bin\mysqldump" -u<user> -p<passwort> LiF_1 > C:\Server\Backup\Life_is_Feudal\LiF_1_%DATUM%_%ZEIT%.sql
"C:\Program Files\7-Zip\7z.exe" a -mx9 -tzip C:\Server\Backup\Life_is_Feudal\LiF_1_%DATUM%_%ZEIT%.zip "C:\Server\Backup\Life_is_Feudal\LiF_1_%DATUM%_%ZEIT%.sql"
del C:\Server\Backup\Life_is_Feudal\LiF_1_%DATUM%_%ZEIT%.sql
"C:\Server\MariaDB 5.5(x64)\bin\mysqldump" -u<user> -p<passwort> LiF_1 > C:\Server\Backup\Life_is_Feudal\LiF_1_%DATUM%_%ZEIT%.sql
"C:\Program Files\7-Zip\7z.exe"
"C:\Program Files\7-Zip\7z.exe" a -mx9 -tzip C:\Server\Backup\Life_is_Feudal\LiF_1_%DATUM%_%ZEIT%.zip "C:\Server\Backup\Life_is_Feudal\LiF_1_%DATUM%_%ZEIT%.sql"
@echo off
echo Sicherung Datenbank 'lif_1'
for /f "tokens=1-3 delims=. " %%a in ('date/t') do set tag=%%a&set monat=%%b&set jahr=%%c
for /f "tokens=1-3 delims=: " %%d in ('time/t') do set hour=%%d&set minute=%%e
set ZEIT=%hour%%minute%
set DATUM=%jahr%%monat%%tag%
"C:\Program Files\MariaDB 5.5\bin\mysqldump" -uroot -pMEINPASSWORT lif_1 > C:\lif_tools\Backup\Life_is_Feudal\LiF_1_%DATUM%_%ZEIT%.sql
"C:\Program Files\7-Zip\7z.exe" a -mx9 -tzip C:\lif_tools\Backup\Life_is_Feudal\LiF_1_%DATUM%_%ZEIT%.zip "C:\lif_tools\Backup\Life_is_Feudal\lif_1_%DATUM%_%ZEIT%.sql"
del C:\lif_tools\Backup\Life_is_Feudal\LiF_1_%DATUM%_%ZEIT%.sql
"C:\Program Files\MariaDB 5.5\bin\mysqldump" -uroot -pcesqlol lif_1 >
### edit start ###
$app = "C:\Server\LifeIsFeudalServer\ddctd_cm_yo_server.exe"
$arguments = "-worldID 1"
$processLiF = "ddctd_cm_yo_server"
### edit end ###
$lifProcess = Get-Process | Where-Object { $_.ProcessName -eq $processLiF }
if($lifProcess -eq $null){
echo "Server not running"
echo "Start server"
Start-Process $app $arguments # Server wird gestartet
}else{
echo "Server is running"
echo "Kill server"
kill -processname $processLiF
echo "Restart server"
Start-Process $app $arguments
}