Nie można użyć scp z aliasem bash

15

Ten kod nie działa:

scp ~/Desktop/favicon.ico nameOfBashAlias:/public_html/mySite/templates/blog/

Alias ​​to:

alias nameOfBashAlias='ssh [email protected]'

Jak rozwiązać ten problem?

Edytować

Czy jest możliwe coś podobnego do następującego kodu, na przykład uruchamianie wielu instancji bash?

scp ~/Desktop/favicon.ico (nameOfBashAlias)>:/public_html/mySite/templates/blog/

Nie udało mi się uruchomić powyższego kodu.

Léo Léopold Hertz 준영
źródło

Odpowiedzi:

22

Nie polecam używania aliasu Bash do tego, co próbujesz osiągnąć. Możesz po prostu wprowadzić wszystkie informacje do pliku konfiguracyjnego SSH i gotowe. Przeczytaj stronę podręcznika, ssh_configjeśli jesteś ciekawy, skąd one pochodzą. Możesz zrobić porządne rzeczyssh_config

Plik znajduje się tutaj ~/.ssh/config

Użyj ulubionego edytora i utwórz plik, a następnie dostosuj go do swojej sytuacji.

Host nameOfBashAlias
HostName 11.11.11.11
User myUsername
Port 22

Jesteś teraz skonfigurowany do wydania następującego polecenia:

$ ssh nameOfBashAlias 

Założę się, że nie wiesz, jak zintegrowane jest to wszystko. Teraz, gdy masz już tę konfigurację, działają również następujące polecenia

$ scp /some/file nameOfBashAlias:/path/to/storage/location/ 

Nie trzeba już pamiętać, że scp używa „-P” dla portu, a ssh używa „-p”. Ten „alias” działa również w aplikacjach GUI OS X, takich jak Transmit.

OpenSSH uzyskuje dane konfiguracyjne z następujących źródeł w następującej kolejności:

  1. opcje wiersza poleceń
  2. plik konfiguracyjny użytkownika ~/.ssh/config
  3. plik konfiguracji całego systemu /etc/ssh_config
Von Landfried
źródło
Tak, całkowicie się z tobą zgadzam. Obecnie również używam tej metody, ponieważ znacznie lepiej synchronizuje się ona z innymi systemami i innymi narzędziami.
Léo Léopold Hertz
nie działa dla mnie w
systemie
@JabranSaeed Proszę, otwórz nowe pytanie lub tutaj wiki społeczności jako odpowiedź na twoją sprawę z informacją o twoim systemie operacyjnym, wersji, powłoce itp. Podaj tutaj również komentarz na temat twojego wyzwania. Ten wątek dotyczy GNU scp.
Léo Léopold Hertz -
FWIW wydaje się, że to działa na OS X (przynajmniej na moim, El Capitain 10.11.6)
Alex W
5

scpnie działa bash. Musisz uruchomić to:

 scp ~/Desktop/favicon.ico 11.11.11.111:/public_html/mySite/templates/blog/

Jeśli masz tylko alias, a powyższy kod nie jest dla Ciebie możliwy, rozważ uruchomienie go w następujący sposób:

nameOfBashAlias cat /public_html/mySite/templates/blog/ > ~/Desktop/favicon.ico

W ten sposób wywołujesz sshzawartość pliku i kierujesz ją do pliku na dysku. Można to napisać w inny sposób dla przesyłania.


źródło
Pierwszym poleceniem powinno być scp ~ / Desktop / favicon.ico nazwa_uż[email protected]: / public_html / mySite / templates / blog /
Léo Léopold Hertz 준영 9.09
2

Aliasy są zastępowane, gdy są pierwszym słowem polecenia bash. Twój alias pojawia się na początku trzeciego słowa.

Użyłbym do tego zmiennej powłoki.

blah='[email protected]'
scp ~/Desktop/favicon.ico ${blah}:/public_html/mySite/templates/blog/

Przy okazji, myślę, że twój oryginalny alias nie powinien zawierać w nim ssh. Ostatni przykładowy kod zawiera>, który również wygląda źle.

Andrej Panjkov
źródło
@mataap: Dziękuję bardzo za odpowiedź!
Léo Léopold Hertz
0

Nie, twoje przykłady nie będą działać, ponieważ nie tak BASHdziałają aliasy. Sugeruję użycie zmiennej. Umieść to w swoim ~/.profilelub ~/.bashrc[cokolwiek użyjesz]:
site="[email protected]"
wtedy w twoim terminalu to zadziała:
scp favicon.ico $site:/dir/


Możesz też napisać skrypt, tak jak ja, dla mojego iPoda. w moim bashrc mam ipod=192.168.2.60, potem w skrypcie, source ~/.bashrcwięc zapisuje moje zmienne w skrypcie, a następnie w skrypcie: scp $1 $ipod
wadą jest to, że muszę edytować skrypt, aby wykonać rekurencję. i mogę zrobić tylko 1 plik. ale kiedy potrzebuję któregoś z tych, zwykle używam scpbezpośrednio z terminala!
~ Matt

Matt
źródło