diff options
author | Roman Smrž <roman.smrz@seznam.cz> | 2025-06-01 16:42:09 +0200 |
---|---|---|
committer | Roman Smrž <roman.smrz@seznam.cz> | 2025-06-01 16:56:21 +0200 |
commit | b698fa819723635ddbdde15e592c3b7acc018024 (patch) | |
tree | 11c7e543209a2bc6d93f32bb2c979736fba6eb26 /src/Script | |
parent | 66de6b7e5ed20fb8b833ff267fe578e4716e83c7 (diff) |
Execute shell commands in appropriate network namespace
Changelog: Execute shell commands in appropriate network namespace
Diffstat (limited to 'src/Script')
-rw-r--r-- | src/Script/Shell.hs | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/Script/Shell.hs b/src/Script/Shell.hs index b00dc5f..5c70f2a 100644 --- a/src/Script/Shell.hs +++ b/src/Script/Shell.hs @@ -20,6 +20,7 @@ import System.IO import System.Process hiding (ShellCommand) import Network +import Network.Ip import Output import Process import Run.Monad @@ -37,6 +38,7 @@ newtype ShellScript = ShellScript [ ShellStatement ] executeScript :: Node -> ProcName -> MVar ExitCode -> Handle -> Handle -> Handle -> ShellScript -> TestRun () executeScript node pname statusVar pstdin pstdout pstderr (ShellScript statements) = do + setNetworkNamespace $ getNetns node forM_ statements $ \ShellStatement {..} -> case shellCommand of "echo" -> liftIO $ do T.hPutStrLn pstdout $ T.intercalate " " shellArguments @@ -65,7 +67,7 @@ spawnShell procNode procName script = do ( pstdin, procStdin ) <- liftIO $ createPipe ( hout, pstdout ) <- liftIO $ createPipe ( herr, pstderr ) <- liftIO $ createPipe - procHandle <- fmap (Right . (, statusVar)) $ forkTest $ do + procHandle <- fmap (Right . (, statusVar)) $ forkTestUsing forkOS $ do executeScript procNode procName statusVar pstdin pstdout pstderr script let procKillWith = Nothing |