在 linux 内核中执行 bash 脚本

Execute bash script in linux kernel

我已经阅读了很多关于这个主题的问题和答案,但我仍然不知道为什么我的程序不起作用。

我的脚本:

a.c

   #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

我做错了什么?为什么不编写脚本 运行?

使用 /bin/bash 作为可执行文件并将您的脚本作为第一个参数:

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