Comment on page

Restart rport through a tunnel

How to restart the rport client safely when connected via tunnel


You want to restart the rport client, but you are connected via a tunnel (RDP, VNC or SSH). If you just execute a restart command, you will kill the current connection and the restart is also killed halfway. The client will not reconnect.


You must restart the client with a small delay from a background process. This is done best from the rport script interface.

On Linux

On Linux, execute the following script:
rport restart
if [ "$(id -u)" -ne 0 ];then
echo "Not root. Please enable sudo";
exit 1
if which at >/dev/null 2>&1; then
echo "$RESTART_CMD" | at now +1 minute
echo "Restart of rport scheduled via atd."
nohup sh -c "sleep 10;$RESTART_CMD" >/dev/null 2>&1 &
echo "Restart of rport scheduled via nohup+sleep."
Make sure, you enable sudo.
Restart rport over rport on Linux

On Windows

On Windows, a few more lines of PowerShell are required to execute a task in the background. Execute the following script to safely restart rport.
restart rport
function Invoke-Later {
[Parameter(Mandatory = $true)]
[string] $ScriptBlock,
[Parameter(Mandatory = $false)]
[int] $Delay = 10,
[Parameter(Mandatory = $false)]
[string] $Description = "Background Task"
$taskName = 'Invoke-Later-' + (Get-Random)
$taskFile = [System.Environment]::GetEnvironmentVariable('TEMP', 'Machine') + '\' + $taskName + '.ps1'
$ScriptBlock.Split("`n") | ForEach-Object {
if ($_)
$_.Trim() | Out-File -FilePath $taskFile -Append
"Unregister-ScheduledTask -Taskname $( $taskName ) -Confirm:`$false" | Out-File -FilePath $taskFile -Append
"Remove-Item `"$( $taskFile )`" -Force" | Out-File -FilePath $taskFile -Append
$action = New-ScheduledTaskAction -Execute "powershell" -Argument "-ExecutionPolicy bypass -file $( $taskFile )"
$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddSeconds($Delay)
$principal = New-ScheduledTaskPrincipal -UserID "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries
$task = New-ScheduledTask -Action $action -Principal $principal -Trigger $trigger -Settings $settings
Register-ScheduledTask $taskName -InputObject $task
Write-Output "* Task `"$( $Description )`" [$( $taskFile )] scheduled."
Write-Output " It will be executed within $( $Delay ) seconds."
Invoke-Later -Description "Restart RPort" -Delay 10 -ScriptBlock {
Stop-Service rport
Start-Service rport
Make sure you execute the script with PowerShell.
Restart rport over rport on Windows