คำตอบที่นี่ ( https://stackoverflow.com/a/2732991/4752883 ) ทำงานที่ดีถ้าคุณกำลังพยายามที่จะเรียกใช้สคริปต์บนเครื่องลินุกซ์ระยะไกลโดยใช้หรือplink
มันจะทำงานถ้าสคริปต์ที่มีหลายบรรทัดบนssh
linux
** อย่างไรก็ตามหากคุณพยายามที่จะเรียกใช้สคริปต์แบทช์ที่อยู่บนlinux/windows
เครื่องท้องถิ่น
และเครื่องระยะไกลของคุณWindows
และมันประกอบด้วยหลายบรรทัดโดยใช้ **
plink root@MachineB -m local_script.bat
ไม่เคยทำงาน
บรรทัดแรกของสคริปต์เท่านั้นที่จะถูกเรียกใช้งาน นี่อาจจะเป็นข้อ จำกัด plink
ของ
โซลูชันที่ 1:
ในการรันสคริปต์แบตช์หลายบรรทัด (โดยเฉพาะถ้าค่อนข้างง่ายประกอบด้วยสองสามบรรทัด):
หากชุดสคริปต์ต้นฉบับของคุณมีดังต่อไปนี้
cd C:\Users\ipython_user\Desktop
python filename.py
คุณสามารถรวมบรรทัดเข้าด้วยกันโดยใช้ตัวคั่น "&&" ดังต่อไปนี้ในlocal_script.bat
ไฟล์ของคุณ
:
https://stackoverflow.com/a/8055390/4752883 :
cd C:\Users\ipython_user\Desktop && python filename.py
หลังจากการเปลี่ยนแปลงนี้คุณสามารถเรียกใช้สคริปต์ตามที่อธิบายไว้ที่นี่โดย @ JasonR.Coombs: https://stackoverflow.com/a/2732991/4752883ด้วย:
`plink root@MachineB -m local_script.bat`
โซลูชันที่ 2:
หากสคริปต์ชุดงานของคุณค่อนข้างซับซ้อนอาจเป็นการดีกว่าถ้าคุณใช้สคริปต์ชุดงานซึ่งสรุปคำสั่ง plink และตามที่อธิบายไว้ที่นี่โดย @Martin https://stackoverflow.com/a/32196999/4752883 :
rem Open tunnel in the background
start plink.exe -ssh [username]@[hostname] -L 3307:127.0.0.1:3306 -i "[SSH
key]" -N
rem Wait a second to let Plink establish the tunnel
timeout /t 1
rem Run the task using the tunnel
"C:\Program Files\R\R-3.2.1\bin\x64\R.exe" CMD BATCH qidash.R
rem Kill the tunnel
taskkill /im plink.exe