MySQL Shell 9.4
      MySQL Shell supports running scripts in
      batch
      mode. This enables you to automate processes using
      AdminAPI with scripts written in JavaScript or Python, which can
      be run using MySQL Shell's --file
      option. For example:
    
$> mysqlsh --file setup-innodb-cluster.js
        Any command line options specified after the script file name
        are passed to the script and not to
        MySQL Shell. You can access those options using the
        os.argv array in JavaScript, or the
        sys.argv array in Python. In both cases, the
        first option picked up in the array is the script name.
      
The contents of an example script files are shown here, using JavaScript:
print('InnoDB Cluster sandbox set up\n');
print('==================================\n');
print('Setting up a MySQL InnoDB Cluster with 3 MySQL Server sandbox instances,\n');
print('installed in ~/mysql-sandboxes, running on ports 3310, 3320 and 3330.\n\n');
var dbPass = shell.prompt('Please enter a password for the MySQL root account: ', {type:"password"});
try {
   print('\nDeploying the sandbox instances.');
   dba.deploySandboxInstance(3310, {password: dbPass});
   print('.');
   dba.deploySandboxInstance(3320, {password: dbPass});
   print('.');
   dba.deploySandboxInstance(3330, {password: dbPass});
   print('.\nSandbox instances deployed successfully.\n\n');
   print('Setting up InnoDB Cluster...\n');
   shell.connect('root@localhost:3310', dbPass);
   var cluster = dba.createCluster("prodCluster");
   print('Adding instances to the Cluster.');
   cluster.addInstance({user: "root", host: "localhost", port: 3320, password: dbPass});
   print('.');
   cluster.addInstance({user: "root", host: "localhost", port: 3330, password: dbPass});
   print('.\nInstances successfully added to the Cluster.');
   print('\nInnoDB Cluster deployed successfully.\n');
} catch(e) {
   print('\nThe InnoDB Cluster could not be created.\n\nError: ' +
   + e.message + '\n');
}
Or using Python:
print('InnoDB Cluster sandbox set up\n');
print('==================================\n');
print('Setting up a MySQL InnoDB Cluster with 3 MySQL Server sandbox instances,\n');
print('installed in ~/mysql-sandboxes, running on ports 3310, 3320 and 3330.\n\n');
dbPass = shell.prompt('Please enter a password for the MySQL root account: ', type ="password");
try:
       print('\nDeploying the sandbox instances.');
       dba.deploy_sandbox_instance(3310, password = dbPass);
       print('.');
       dba.deploy_sandbox_instance(3320, password = dbPass);
       print('.');
       dba.deploy_sandbox_instance(3330, password = dbPass);
       print('.\nSandbox instances deployed successfully.\n\n');
       print('Setting up InnoDB Cluster...\n');
       shell.connect('root@localhost:3310', dbPass);
       cluster = dba.create_cluster("prodCluster");
       print('Adding instances to the Cluster.');
       cluster.add_instance('root@localhost:3320', password = dbPass);
       print('.');
       cluster.add_instance('root@localhost:3330', password = dbPass);
       print('.\nInstances successfully added to the Cluster.');
       print('\nInnoDB Cluster deployed successfully.\n');
except ValueError:
       print('\nThe InnoDB Cluster could not be created.\n\nError.\n');
AdminAPI is also supported by MySQL Shell's Section 5.8, “API Command Line Integration”. This command line integration enables you to easily integrate AdminAPI into your environment. For example, to check the status of an InnoDB Cluster using the sandbox instance listening on port 1234:
$ mysqlsh root@localhost:1234 -- cluster statusThis maps to the equivalent command in MySQL Shell:
mysql-js> cluster.status()