/ / Spustenie príkazu ssh a udržiavanie spojenia - ssh

Spúšťanie príkazu ssh a udržiavanie pripojenia - ssh

Existuje spôsob, ako vykonať príkaz pred prístupom k vzdialenému terminálu

Keď zadám tento príkaz:

bash $> ssh user@server.com "ls"

Príkaz ls sa spúšťa vo vzdialenom počítači, ale ssh skončí a nemôžem pokračovať v mojej vzdialenej relácii.

Existuje spôsob, ako udržať spojenie? Dôvod, prečo sa to pýtam, je, že chcem vytvoriť nastavenie pre ssh session bez toho, aby som musel meniť súbor vzdialeného .bashrc.

odpovede:

1 pre odpoveď č. 1

Môžete skúsiť používať procesnú substitúciu v initovom súbore bash. V nižšie uvedenom príklade definujem funkciu myfunc:

myfunc () {
echo "Running myfunc"
}

ktorý som premenil na riadne uniknutú jednu-liner odrážajú v <(...) konštruovať pre procesné substitúcie pre --init-file argument of bash:

$ ssh -t localhost "bash --init-file <( echo "myfunc() { echo "Running myfunc" ; }" )  "
Password:
bash-3.2$ myfunc
Running myfunc
bash-3.2$ exit

Upozorňujeme, že akonáhle ste pripojení, môj .bashrc nie je zdrojom, ale myfunc je definovaná a vhodne použiteľná v interaktívnej relácii.

Možno by to bolo trochu ťažšie pre zložitejšie bash funkcie, ale to funguje.


2 pre odpoveď č. 2

Ja by som nútil priradenie pseudo tty a potom spustiť bash po ls príkaz:

syzdek@host1$ ssh -t host2.example.com "ls -l /dev/null;   bash"
-rwxrwxrwx    1 root     other          27 Apr  1  2005 /dev/null
bash-4.1$