Tidak dapat menggunakan scp dengan alias bash

15

Kode ini tidak berfungsi:

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

Alias ​​adalah:

alias nameOfBashAlias='ssh [email protected]'

Bagaimana saya mengatasi masalah ini?

Edit

Apakah sesuatu yang mirip dengan kode berikut ini mungkin, seperti menjalankan banyak contoh bash?

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

Saya tidak mendapatkan kode di atas berfungsi.

Léo Léopold Hertz 준영
sumber

Jawaban:

22

Saya tidak akan merekomendasikan menggunakan alias Bash untuk apa yang ingin Anda capai. Anda bisa memasukkan semua informasi ke file konfigurasi SSH dan selesai dengan itu. Baca halaman manual untuk ssh_configjika Anda ingin tahu dari mana ini berasal. Anda dapat melakukan beberapa hal dengan rapissh_config

File tersebut terletak di sini ~/.ssh/config

Gunakan editor favorit Anda dan buat file lalu sesuaikan dengan situasi Anda.

Host nameOfBashAlias
HostName 11.11.11.11
User myUsername
Port 22

Anda sekarang siap untuk mengeluarkan perintah berikut:

$ ssh nameOfBashAlias 

Yang saya yakin Anda tidak tahu adalah seberapa terintegrasi semua ini. Sekarang setelah Anda memiliki pengaturan ini, perintah berikut juga berfungsi

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

Tidak lagi mengingat bahwa scp menggunakan "-P" untuk port dan ssh menggunakan "-p". Juga "alias" ini juga berfungsi di aplikasi OS X gui seperti Transmit.

OpenSSH memperoleh data konfigurasi dari sumber-sumber berikut dalam urutan sebagai berikut:

  1. opsi baris perintah
  2. file konfigurasi pengguna ~/.ssh/config
  3. file konfigurasi seluruh sistem /etc/ssh_config
Von Landfried
sumber
Ya, saya sepenuhnya setuju dengan Anda. Saya saat ini menggunakan metode itu juga, karena sinkronisasi jauh lebih baik dengan sistem dan alat lainnya.
Léo Léopold Hertz 준영
tidak bekerja untuk saya di MacOSX
Jabran Saeed
@JabranSaeed Tolong, buka pertanyaan baru atau di sini wiki komunitas sebagai jawaban tentang kasus Anda dengan sepotong informasi tentang OS, versi, shell, dll. Tolong, berikan juga tautan tentang tantangan Anda di komentar. Utas ini relevan untuk GNU scp.
Léo Léopold Hertz 준영
FWIW ini tampaknya berfungsi pada OS X (setidaknya itu terjadi pada saya, El Capitain 10.11.6)
Alex W
5

scptidak menjalankan bash. Anda perlu menjalankan ini:

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

Jika yang Anda miliki hanyalah alias dan kode di atas tidak memungkinkan untuk Anda, pertimbangkan untuk menjalankannya seperti ini:

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

Dengan cara ini, Anda benar-benar memohon sshdan mengarahkan konten file ke file di disk. Ini dapat ditulis dengan cara lain untuk unggahan.


sumber
Perintah pertama harus scp ~ / Desktop / favicon.ico [email protected]: / public_html / mySite / templates / blog /
Léo Léopold Hertz 준영
2

Alias ​​diganti ketika mereka adalah kata pertama dari perintah bash. Alias ​​Anda muncul di awal kata ketiga.

Saya akan menggunakan variabel shell untuk ini.

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

Btw, saya pikir alias asli Anda seharusnya tidak memiliki ssh di dalamnya. Dan contoh kode terakhir memiliki> di dalamnya yang terlihat salah juga.

Andrej Panjkov
sumber
@mapap: Terima kasih banyak atas jawaban Anda!
Léo Léopold Hertz 준영
0

Tidak, contoh Anda tidak akan berfungsi, karena itu bukan cara BASHkerja alias. Saya sarankan Anda menggunakan variabel. Letakkan ini di ~/.profileatau ~/.bashrc[mana pun yang Anda gunakan]:
site="[email protected]"
kemudian di terminal Anda, ini akan berfungsi:
scp favicon.ico $site:/dir/


Atau Anda dapat menulis skrip seperti yang saya lakukan untuk iPod saya. di bashrc saya ipod=192.168.2.60, kemudian di skrip saya source ~/.bashrcsehingga mendapat variabel saya di skrip, kemudian di skrip: scp $1 $ipod
downside adalah saya harus mengedit skrip untuk melakukan rekursif. dan saya hanya bisa melakukan 1 file. tetapi ketika saya membutuhkan keduanya saya biasanya menggunakan scplangsung dari terminal!
~ Mat

Mat
sumber