Terminalを使用して/ etc/config/uhttpdファイルのSSHポートを変更しました。しかし、私はPHPから動的にそれを行う方法を見つけることができないようです。説明するために、YunのLinuxシステム上のポートを自動的に設定するためにサーバが必要です。ですから、基本的にuhttpdファイルのポート番号を自動的に変更する必要があります。前もって感謝します。PHPを使用してarduino yun上のhttpd SSHポートを動的に変更します。
-1
A
答えて
0
Setup SSH keysリモートサーバーへのパスワードなしアクセス。
ユーザがroot
でない場合は、sudo
コマンドを使用してパスワードなしコマンドを実行するには、リモート/etc/sudoers
を設定します。私たちは、簡単にするためにALL
コマンドを許さ
%uhttpd ALL=(ALL) NOPASSWD: ALL
パスワードなしで実行が許可
その後、sudo gpasswd -a user uhttpd
listコマンド:たとえば、あなたはuhttpd
グループ(リモートで)にリモートユーザーを追加することができます。代わりに特定のコマンドをリストすることができます。 man sudoers
を参照してください。
次のようなスクリプト書く:chport.php
に保存
#!/usr/bin/env php
<?php
namespace Tools\Uhttpd\ChangePort;
$ssh_user = 'user'; // Change this
$ssh_host = 'remote.host'; // Change this
$remote_config = '/etc/config/uhttpd';
//////////////////////////////////////////////////////
if (false === ($o = getopt('p:', ['port:']))) {
fprintf(STDERR, "Failed to parse CLI options\n");
exit(1);
}
// Using PHP7 Null coalescing operator
$port = $o['p'] ?? $o['port'] ?? 0;
$port = intval($port);
if ($port <= 0 || $port > 65535) {
fprintf(STDERR, "Invalid port\n");
exit(1);
}
$sudo = $ssh_user == 'root' ? '' : 'sudo';
$sed = <<<EOS
"s/option\s*'listen_http'\s*'[0-9]+'/option 'listen_http' '$port'/"
EOS;
// Replace port in remote config file
execute(sprintf("ssh %s -- $sudo sed -i -r %s %s",
"{$ssh_user}@{$ssh_host}", $sed,
escapeshellarg($remote_config)));
// Restart remote daemon
execute("$sudo /etc/init.d/uhttpd restart");
//////////////////////////////////////////////////////
/**
* @param string $cmd Command
* @return int Commands exit code
*/
function execute($cmd) {
echo ">> Running $cmd\n";
$desc = [
1 => ['pipe', 'w'],
2 => ['pipe', 'w'],
];
$proc = proc_open($cmd, $desc, $pipes);
if (! is_resource($proc)) {
fprintf(STDERR, "Failed to open process for cmd: $cmd\n");
exit(1);
}
if ($output = stream_get_contents($pipes[1])) {
echo $output, PHP_EOL;
}
if ($error = stream_get_contents($pipes[2])) {
fprintf(STDERR, "Error: %s\n", $error);
}
fclose($pipes[1]);
fclose($pipes[2]);
if (0 != proc_close($proc)) {
fprintf(STDERR, "Command failed(%d): %s\n", $exit_code, $cmd);
exit(1);
}
}
をし、それを実行可能にします。
chmod +x chport.php
その後、あなたはこのようにそれを使用することができます:
./chport.php --port=10000
スクリプトで使用されているコマンドをシェルスクリプトでラップし、にリストすることができます。
関連する問題
- 1. JavaScriptを使用してPHP値を動的に変更する
- 2. データArduino YunからGoogle Spreadsheet
- 3. AWS IoTをArduino YunにBasic Pub/Subの例を使用して接続できません
- 4. ポート443でsshを使用してトラフィックシェーピングを回避する
- 5. javadocを使用して動的にHTMLコンテンツを変更しています
- 6. JavaScriptを使用して動的に変更するHTMLフォーム
- 7. マウスを使用してdivを動的にサイズ変更する
- 8. AbstractRoutingDataSourceを使用してデータベーススキーマ/カタログを動的に変更する
- 9. AngularJSを使用して経路を動的に変更する
- 10. CSSを使用してDIVを動的にサイズ変更する
- 11. エクスプローラをプログラム的に停止して再起動する(ポートを変更する)
- 12. ポート変更後のSSH接続がEC2インスタンスに失敗しました
- 13. WPFを使用してC#で画像を動的に変更
- 14. Pacemakerを使用してhttpdを再起動する方法
- 15. javafx:ペイン上で動的にスタイルを変更します。
- 16. Javascriptパラメータは、Playを使用して動的に変更します
- 17. mod_proxyを使用してポートをurl apache2に変更してください
- 18. PHPを使用してADパスワードを変更します
- 19. arduino yun with usbサウンドカードのファイル数を取得する
- 20. SSHを使用してPHPを使用してリモートMySQLデータベースに接続
- 21. JavaScriptを使用してハイチャート内のデータポイントを動的に変更するには
- 22. 動的データプロジェクトのデータ注釈を動的に変更します
- 23. PHPとJavaScriptを使用してGoogle Chartを動的に更新する
- 24. JQueryの.append()を使用してテーブルレイアウトを動的に変更する
- 25. が動的にPHPでのncursesを使用して、カウントを更新
- 26. 別のポートでIPアドレスを使用してSSHでギュッと返す
- 27. WMIとpowershellを使用してポートを永久に変更する
- 28. ポート転送(SSHトンネル)を使用したgit push
- 29. PHPのMySQLの動的データを使用した動的変数の作成
- 30. PHPを使用してレコードを上下に移動
ポートを自動的に変更してポートを動的に変更するとはどういう意味ですか? PHPスクリプトで設定ファイルをリモートで変更したいですか?このようなもの: './myscript.php --host = somehost --port = 8788'? –
はい、Linuxチップがデフォルト80から別のポートにリモートで使用するリスニングポートを変更するには、PHPスクリプトが必要です。 – user3381715