ไม่สามารถใช้ scp ด้วย bash alias


15

รหัสนี้ใช้ไม่ได้:

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

นามแฝงคือ:

alias nameOfBashAlias='ssh myUsername@11.11.11.111'

ฉันจะแก้ปัญหานี้ได้อย่างไร

แก้ไข

สิ่งที่คล้ายกับรหัสต่อไปนี้เป็นไปได้เช่นใช้หลาย ๆ กรณีbash?

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

ฉันไม่ได้รับรหัสข้างต้นในการทำงาน

คำตอบ:


22

ฉันจะไม่แนะนำให้ใช้นามแฝง Bash สำหรับสิ่งที่คุณพยายามทำ คุณสามารถป้อนข้อมูลทั้งหมดลงในไฟล์ปรับแต่งของ SSH และทำมันได้ อ่าน man page สำหรับssh_configหากคุณสงสัยว่าสิ่งเหล่านี้มาจากไหน คุณสามารถทำสิ่งที่เป็นระเบียบด้วยssh_config

ไฟล์ตั้งอยู่ที่นี่ ~/.ssh/config

ใช้เครื่องมือแก้ไขที่คุณชื่นชอบและสร้างไฟล์จากนั้นปรับสิ่งเหล่านี้ให้เหมาะกับสถานการณ์ของคุณ

Host nameOfBashAlias
HostName 11.11.11.11
User myUsername
Port 22

ตอนนี้คุณกำลังตั้งค่าให้ใช้คำสั่งต่อไปนี้:

$ ssh nameOfBashAlias 

สิ่งที่ฉันพนันได้เลยว่าคุณไม่รู้ก็คือการบูรณาการทั้งหมดนี้เข้าด้วยกัน หลังจากที่คุณมีการตั้งค่านี้แล้วคำสั่งต่อไปนี้ก็ใช้งานได้

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

ไม่มีการจดจำอีกต่อไปว่า scp ใช้ "-P" สำหรับพอร์ตและ ssh ใช้ "-p" นอกจากนี้ "นามแฝง" นี้ยังทำงานในแอป OS X gui เช่นการส่งด้วย

OpenSSH รับข้อมูลการกำหนดค่าจากแหล่งต่อไปนี้ตามลำดับต่อไปนี้:

  1. ตัวเลือกบรรทัดคำสั่ง
  2. ไฟล์การกำหนดค่าของผู้ใช้ ~/.ssh/config
  3. ไฟล์การกำหนดค่าทั้งระบบ /etc/ssh_config

ใช่ฉันเห็นด้วยกับคุณอย่างสมบูรณ์ ทุกวันนี้ฉันก็ใช้วิธีนี้เช่นกันเพราะมันซิงค์กับระบบอื่น ๆ และเครื่องมืออื่น ๆ ได้ดีขึ้นมาก
LéoLéopold Hertz 준영

ไม่ทำงานสำหรับฉันใน MacOSX
Jabran Saeed

@JabranSaeed โปรดเปิดคำถามใหม่หรือที่นี่ wiki ชุมชนเป็นคำตอบเกี่ยวกับเคสของคุณพร้อมข้อมูลเกี่ยวกับ OS, เวอร์ชัน, shell ฯลฯ โปรดระบุลิงก์เกี่ยวกับความท้าทายของคุณที่นี่ในคอมเม้นท์ หัวข้อนี้เกี่ยวข้องกับ GNU scp
LéoLéopold Hertz 준영

FWIW สิ่งนี้ดูเหมือนว่าจะทำงานบน OS X (อย่างน้อยก็ทำในเหมือง El Capitain 10.11.6)
อเล็กซ์ W

5

scpไม่ได้ใช้ทุบตี คุณจะต้องเรียกใช้สิ่งนี้:

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

หากสิ่งที่คุณมีคือนามแฝงและรหัสข้างต้นเป็นไปไม่ได้สำหรับคุณให้ลองเรียกใช้ดังนี้:

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

ด้วยวิธีนี้คุณจะเรียกใช้sshและนำเนื้อหาไฟล์ไปยังไฟล์บนดิสก์ สามารถเขียนวิธีอื่นในการอัปโหลด


คำสั่งแรกควรเป็น scp ~ / Desktop / favicon.ico username@11.11.11.111: / public_html / mySite / แม่แบบ / บล็อก /
LéoLéopold Hertz 준영

2

นามแฝงจะถูกแทนที่เมื่อพวกเขาเป็นคำแรกของคำสั่ง bash นามแฝงของคุณจะปรากฏที่จุดเริ่มต้นของคำที่สาม

ฉันจะใช้ตัวแปรเชลล์สำหรับสิ่งนี้

blah='myUsername@11.11.11.111'
scp ~/Desktop/favicon.ico ${blah}:/public_html/mySite/templates/blog/

Btw ฉันคิดว่านามแฝงดั้งเดิมของคุณไม่ควรมี SSH อยู่ และตัวอย่างรหัสสุดท้ายมี> ซึ่งมันดูผิดด้วย


@mataap: ขอบคุณมากสำหรับคำตอบของคุณ!
LéoLéopold Hertz 준영

0

ไม่ตัวอย่างของคุณจะไม่ทำงานเพราะนั่นไม่ใช่วิธีที่BASHนามแฝงทำงาน ฉันแนะนำให้คุณใช้ตัวแปร ใส่สิ่งนี้ในของคุณ~/.profileหรือ~/.bashrc[ใดก็ตามที่คุณใช้]:
site="user@site.com"
จากนั้นในเทอร์มินัลของคุณสิ่งนี้จะใช้งานได้:
scp favicon.ico $site:/dir/


หรือคุณสามารถเขียนสคริปต์เหมือนที่ฉันทำเพื่อ iPod ของฉัน ใน bashrc ของฉันฉันมีipod=192.168.2.60จากนั้นในสคริปต์ของฉันฉันsource ~/.bashrcจึงได้รับตัวแปรของฉันในสคริปต์แล้วในสคริปต์: scp $1 $ipod
ข้อเสียคือฉันจะต้องแก้ไขสคริปต์เพื่อทำซ้ำ และฉันทำได้แค่ 1 ไฟล์เท่านั้น แต่เมื่อฉันต้องการอย่างใดอย่างหนึ่งเหล่านั้นฉันมักจะใช้scpโดยตรงจากสถานี!
~ แมตต์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.