คำสั่ง cd ที่ใช้ตัวแปรเพื่อแม็พวอลุ่ม NFS ภายใน ssh ในสคริปต์ linux ไม่ทำงาน


0

ฉันต้องทำสิ่งต่อไปนี้จากภายในสคริปต์ทุบตี / VMNFS โฟลเดอร์ / อยู่ในกล่อง linux จากที่สคริปต์ทำงานและถูกแมปไปยังเครื่องที่ฉัน ssh'ing เป็น NFS ที่ / vmfs / ไดรฟ์ / VMNFS / คำสั่ง cd ที่สองไม่ทำงานไม่ได้มีชื่อพา ธ เชิงสัญลักษณ์หรือชื่อพา ธ แบบฟิสิคัล ทำไม? และจะแก้ไขได้อย่างไร?

#!/bin/bash
ssh -2 root@9.124.119.17  /bin/sh  <<\EOF
vmfile_path=`grep / vmvar_file`
datastore_path=/vmfs/volumes/VMNFS/
cd $datastore_path                && echo "The present working directory is" `pwd -P`
esxi_vmfile_path_sub=`pwd -P`     && echo "variable value is" $esxi_vmfile_path_sub
esxi_vmfile_path=`echo $vmfile_path | sed "s:/VMNFS:$esxi_vmfile_path_sub:"`             
cd "$esxi_vmfile_path" 
EOF


***Output***:
The current working directory is  /vmfs/volumes/65335ec4-46d12e41
variable value is /vmfs/volumes/65335ec4-46d12e41
can't cd to /vmfs/volumes/65335ec4-46d12e41/TPAE7.5/

คำตอบ:


0

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

นอกจากนั้นดูเหมือนว่าคุณกำลังใช้วิธีที่ซับซ้อนอย่างเหลือเชื่อในการเปลี่ยนไดเรกทอรี เกิดอะไรขึ้นกับ

#!/bin/bash
ssh -2 root@9.124.119.17  /bin/sh  <<EOF
cd "/vmfs/volumes$(grep -m 1 / vmvar_file)"
EOF

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


ฉันกำลังเข้าสู่ระบบในฐานะ root และใช่มันทำงานด้วยตนเอง (เช่นเมื่อไดเรกทอรีถูกฮาร์ดโค้ด) เฉพาะเมื่อฉันใช้ตัวแปรคำสั่ง cd ไม่ทำงาน
Bhavya Maheshwari

แต่มันจำเป็นอย่างยิ่งสำหรับฉันที่จะใช้ตัวแปร
Bhavya Maheshwari

อัปเดตคำตอบของฉัน
Stefan Seidel

0

โง่คิดว่า ... ตรวจสอบเพื่อดูว่าคุณไม่มีช่องว่างที่ท้ายเส้นทางของคุณใน vmar_file


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