Lucrez la un script care trebuie să copieze unele fișiere de pe o mașină locală într-un director de pe un server la distanță. Problema cu care mă confrunt este că directorul (/etc/init.d) este deținut de root, așa că primesc excepții de permisiuni dacă încerc să copiez fișiere în el. Asta înseamnă că nu pot folosi scp fără a mă autentifica ca root.
Cea mai apropiată soluție pe care am găsit-o până acum este acest răspuns: https://askubuntu.com/a/872537/798391 . Din păcate, răspunsul dat nu prea funcționează și niciuna dintre sugestiile oferite în comentarii nu pare să o rezolve. Dacă fug
cat myscript.sh | ssh foo@myserver „sudo tee -a /etc/init.d/myscript.sh”
Primesc eroarea
sudo: fără tty prezent și nici un program askpass specificat
Unul dintre comentarii a sugerat adăugarea -t la comanda ssh
cat myscript.sh | ssh -t foo@myserver „sudo tee -a /etc/init.d/myscript.sh”
dar asta a dus la eroare
Pseudo-terminalul nu va fi alocat deoarece stdin nu este un terminal.
O altă opțiune sugerată a fost să folosiți argumentul -S al sudo
cat myscript.sh | ssh foo@myserver "sudo -S tee -a /etc/init.d/myscript.sh"
Cel puțin, aceasta solicită parola, dar expiră și solicită din nou înainte ca parola să poată fi introdusă complet.
În acest moment am rămas fără idei.Există vreo modalitate de a face această comandă să funcționeze? Există o soluție alternativă mai bună pentru copierea fișierelor într-o locație la distanță protejată?