
У меня есть index.html
ссылка, которая должна удалить все *.zip из /mnt/sda1/down
.
Когда я нажимаю на ссылку, начинается загрузка, а не выполнение скрипта sh.
Вот index.html
скрипт sh:
#!/bin/sh
cd /mnt/sda1/down
rm *.zip
...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
<label><a href="delete.sh">DELETE ALL</a> </label>
</form>
</body>
</html>
решение1
Ваша ссылка ведет на файл, который ваш браузер не распознает, поэтому предполагает, что это загрузка.
Размещение этой ссылки в <form>
ничего не меняет. Цель элемента <form>
— собрать параметры перед вызовом URL, указанного в атрибуте «action» (обычно с <input type="submit">
элементом в форме).
Даже не ясно, есть ли здесь сервер. Если да, то какой его тип?
решение2
HTML не обладает такой силой. Вам нужно использовать PHP, поскольку он может взаимодействовать с вашей ОС, поскольку это язык бэкэнда.
Что вы можете сделать, так это создать ссылку на PHP-файл, и при нажатии на ссылку будет осуществлен переход к PHP-файлу, который выполнит скрипт, а затем вы можете указать ему перенаправить вас обратно на домашнюю страницу или что-то в этом роде:
Индекс.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<a href="delete.php">DELETE ALL</a>
</body>
</html>
удалить.php
<?php
echo shell_exec('sh /path/to/delete.sh');
header('Location: /'); #this will take you back to the home page
?>
Оригинальный пост:https://stackoverflow.com/questions/7397672/how-to-run-a-sh-file-from-php