Portál AbcLinuxu, 10. prosince 2025 09:33
ssh jenkins@IP BACKUPHOSTIP=$BACKUPHOSTIP 'bash -s' <<'ENDSSH' hostnamectl echo "IP adresa zálohovaného stroje je $BACKUPHOSTIP" ENDSSHcož funguje a vypíše to obsah proměnné BACKUPHOSTIP. Ovšem při podobném případu a použití sudo toto nefunguje ať se snažím jak se snažím:
ssh jenkins@IP BACKUPHOSTIP=$BACKUPHOSTIP 'sudo BACKUPHOSTIP=$BACKUPHOSTIP -u backupuser -i bash -s' <<'ENDSSH'
echo "1 IP adresa zálohovaného stroje je $BACKUPHOSTIP"
echo "2 IP adresa zálohovaného stroje je" ${BACKUPHOSTIP}
echo "3 IP adresa zálohovaného stroje je" ${BACKUPHOSTIP@Q}
ENDSSH
Výsledek je vždy prázdná proměnná. Nevěděl by někdo jak to vyřešit?
Konstrukci se bash STDIN používám protože by bylo nesnadné prát se se všemi těmi uvozovkami v uvozovkách.
Řešení dotazu:
man sudoers: Hledej hesla variable a env_reset.man ssh_config je SendEnv a v man sshd_config je AcceptEnv. To se taky může hodit, kdyby šlo o předávání proměnných z lokálního shellu skrz SSH na druhou stranu.ssh USER@IP "BACKUPHOSTIP=$BACKUPHOSTIP sudo -u backupuser -i bash -s" <<'ENDSSH'
echo "1 IP adresa zálohovaného stroje je $BACKUPHOSTIP"
echo "2 IP adresa zálohovaného stroje je" ${BACKUPHOSTIP}
echo "3 IP adresa zálohovaného stroje je" ${BACKUPHOSTIP@Q}
ENDSSH
alebo ak chces zdoraznit, ze predtym bola definovana:
BACKUPHOSTIP=$BACKUPHOSTIP; ssh USER@IP "BACKUPHOSTIP=$BACKUPHOSTIP sudo -u backupuser -i bash -s" <<'ENDSSH'
echo "1 IP adresa zálohovaného stroje je $BACKUPHOSTIP"
echo "2 IP adresa zálohovaného stroje je" ${BACKUPHOSTIP}
echo "3 IP adresa zálohovaného stroje je" ${BACKUPHOSTIP@Q}
ENDSSH
Inac, prikaz set vypise vsetky aktualne premenne shellu.
root@notebook:/# BACKUPHOSTIP="2.3.4.5" root@notebook:/# BACKUPHOSTIP=$BACKUPHOSTIP;echo $BACKUPHOSTIP; ssh USER@IP "echo $BACKUPHOSTIP;BACKUPHOSTIP=$BACKUPHOSTIP sudo -u backupuser -i bash -s" 2.3.4.5 2.3.4.5 echo $BACKUPHOSTIP ^Croot@notebook:/#ta proměnná je prázdná.. nepřejde přes to sudo dle všeho. Nakonec jsem to odescapoval, nebylo to tak hrozné..
--preserve-env=list
Indicates to the security policy that the user wishes to add
the comma-separated list of environment variables to those pre‐
served from the user's environment. The security policy may
return an error if the user does not have permission to pre‐
serve the environment.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.