リモート サーバーに SSH 接続するスクリプトを実行する際に問題が発生しています。コマンド ラインから SSH 接続するだけではサーバーに問題なく接続できますが、これを行うスクリプトを実行すると、「名前またはサービスが不明です」というエラーが発生します。/etc/hosts に IP アドレスとホスト名を追加しましたが、効果はありませんでした。
私のスクリプトは単純です:
#!/bin/bash
ssh username@hostname
何か間違ったことをしているのでしょうか? 明らかに、このためだけのスクリプトは必要ありませんが、これが機能したら実行するコマンドを追加するつもりです。
答え1
このスクリプトの問題点は、Windowsのような別のシステムからファイルをコピーするときに、改行\n
と復帰が追加されることです\r\n
。改行の詳細については、改行ウィキペディアのエントリ。
問題を説明するために、短い断片をアップロードしましたここ問題を解決する方法を説明しています。
要するに:使用tr変な行末を削除するには
tr -d \\r <yourscript>newscript && mv newscript yourscript
その後、スクリプトを再度実行します。
または、artm が示唆したとおりです。
エディタ内ではvim
、
:set ff=unix
(ffの略称ファイル形式) を実行してファイルを保存しますshift+zz
。