Выполнить скрипт bash в ядре Linux - PullRequest
0 голосов
/ 20 ноября 2018

Я прочитал много вопросов и ответов по этой теме, но до сих пор не понимаю, почему моя программа не работает.

Мой сценарий:

ac

   #include <linux/module.h>       /* Needed by all modules */
   #include <linux/kernel.h>       /* Needed for KERN_INFO */
   #include <linux/init.h>         /* Needed for the macros */
   #include<linux/kmod.h>

   static int __init hello_start(void)
   {
       printk(KERN_INFO "Loading rooted module...\n");
       char* argv[] = {"/home/tomasz/", "s.sh", NULL};

       static char* envp[] = { "HOME=/",  "TERM=linux",   "PATH=/sbin:/bin:/usr/sbin:/usr/bin", NULL };
       call_usermodehelper(argv[0], argv, envp, UMH_WAIT_EXEC);
       return 0;
   }

   static void __exit hello_end(void)
   {
       printk(KERN_INFO "exit.\n");
   }

   module_init(hello_start);
   module_exit(hello_end);

/ home / tomasz / s.sh

#for example
reboot
# but in the future here will be sending file by ftp

Что я делаю не так?Почему не запускается скрипт?

1 Ответ

0 голосов
/ 21 ноября 2018

Используйте /bin/bash в качестве исполняемого файла и ваш скрипт в качестве первого аргумента:

char* argv[] = {"/bin/bash", "/home/tomasz/s.sh", NULL};
...